这里虽然说是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,参考我的:
4.执行如下命令,创建镜像:
docker build -t aoc .(注意最后的点)
5.首次创建可能因为要下载java的东西,比较慢,等到创建成功后,使用docker image ls查看,会发现多了一个镜像aoc:
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调用接口,测试是否成功:
接口调用成功。