docker 部署springboot服务

这里虽然说是springboot服务,但是适用于所有的jar服务,因为不管是springboot程序还是其他的java程序,最终一般都要打包成jar包,然后运行,因此这个的方法是适用于所有的jar程序。

通常我们会把后台服务和后台数据库放到不同的容器中,这个是docker管理后台通常的做法,因此这里只需要把jar服务启动起来,就算完成了。

1.首先Liunux系统里面安装docker:

yum install docker

2.在系统的任何位置创建一个docker文件夹,进到这个文件夹下面,在里面创建一个Dockerfile文件:

vi ./Dockerfile

文件内容如下:

FROM java:8
ADD aoc.jar aoc.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/aoc.jar"]
这里的内容暂时不作详细解释,有兴趣地参考官方的文档,aoc.jar是我的jar包,ADD aoc.jar aoc.jar的意思是使用我的jar包在容器里面创建一个jar包,然后命名为aoc.jar

3.将你的jar包上传到docker目录下,这样你的docker目录就包含两个文件,一个是Dockerfile,一个是***.jar,参考我的:

docker 部署springboot服务_第1张图片

4.执行如下命令,创建镜像:

docker build -t aoc .(注意最后的点和点之前的空格)

5.首次创建可能因为要下载java的东西,比较慢,等到创建成功后,使用docker image ls查看,会发现多了一个镜像aoc:

docker 部署springboot服务_第2张图片

6.使用这个docker镜像来启动容器:

docker run --name aoc --restart=always -p 8089:8089 -p 5555:5555 -d aoc

--name aoc表示将容器命名为aoc

--restart=always表示该容器随docker重启而启动

-p 8089:8089 -p 5555:5555是端口映射

最后的aoc表示以aoc镜像启动

这里还需要补充一下:一般我们的服务都要连接数据库,如果是普通的服务器部署,只需要在jdbc设置数据库的地址和端口就可以了,但是现在假如我们把数据库部署在本机的一个容器内,把后台接口服务部署在本机的另一个容器内,那么我们的服务该如何连接数据库呢,我目前有两个方法:

a)jdbc的地址写本地的ip地址,由于数据库容器做了端口映射,当服务尝试使用本机的ip地址访问数据库的时候,本机的docker会自动转给数据库,但是这样有个坏处,需要知道本机的ip地址,然后在设置jdbc的地址,不同的电脑可能ip不一样,每次都要改,很麻烦。

b)将部署后台接口服务的容器和本机的网络共享,即在run命令里面加上参数:--net=host,如下

docker run --name aoc --restart=always --net=host -p 8089:8089 -p 5555:5555 -d aoc

这样,你只需要将你的后台服务的jdbc地址设置为127.0.0.1,只要你的数据库容器和你的服务容器在一台电脑,访问便不会有任何问题了。

7.使用docker ps -a查看容器:

可以发现多了一个aoc容器

8.使用postman调用接口,测试是否成功:

docker 部署springboot服务_第3张图片

接口调用成功。

你可能感兴趣的:(docker 部署springboot服务)