前言
参考代码
简单的学习下怎么在 Spring Boot 中使用 Docker 进行构建,发布一个镜像,现在我们通过远程的 docker api 构建镜像,运行容器,发布镜像等操作。
这里只介绍两种方式:
- 远程命令 api (需要知道 Docker 命令)
- maven 插件 (不需要了解 Docker 命令)
开启 Docker api 远程访问
开启 docker api 远程操作的功能,
例如,centos 7 中在 /usr/lib/systemd/system/docker.service
,文件中,修改 ExecStart
的参数:
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
端口自定义设置即可。
重载所有修改过的配置文件,并且重启 docker,
systemctl daemon-reload
systemctl restart docker.service
需要注意的是,由于没有密码登陆任何权限验证,外网或者生产环境需要上证书使用。
命令方式构建镜像
这种方式其实非常简单,就是需要懂得 docker 命令,才能操作。
经过上面开启 Docker Api 后,我们可以使用网络环境操作 Docker 引擎了。
-
新建
Dockerfile
构建镜像文件,新创建一个文件夹,专门放构建镜像需要的文件,我创建的是/src/docker/
FROM java:8 EXPOSE 8080 VOLUME /tmp ADD springboot-docker.jar app.jar ENTRYPOINT ["java","-jar","/app.jar"]
-
执行 maven 命令 ,将项目打包
mvn clean package --DskipTests
,然后将打好的 jar 包,也放入到Dockerfile
项目目录中。 -
然后进入
src/docker
目录下执行 :docker -H tcp://xxx.xxx.xxx.xxx:2375 build -t test .
开始构建镜像:
Sending build context to Docker daemon 31.74MB Step 1/5 : FROM java:8 ---> d23bdf5b1b1b Step 2/5 : EXPOSE 8080 ---> Using cache ---> 060a43a42146 Step 3/5 : VOLUME /tmp ---> Using cache ---> b4f88fde6181 Step 4/5 : ADD springboot-docker.jar app.jar ---> 3a40188825b0 Step 5/5 : ENTRYPOINT ["java","-jar","/app.jar"] ---> Running in ab093916fc4c Removing intermediate container ab093916fc4c ---> 45a3966feb60 Successfully built 45a3966feb60 Successfully tagged test:latest
使用 docker-maven-plugin构建镜像
在 maven 项目下加入 docker-maven-plugin
<!--打包docker插件相关参数的配置-->
<plugin>
<groupId>com.spotify</groupId>
&