1.首先开启docker的2375端口监听
vim /usr/lib/systemd/system/docker.service
增加配置
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
然后重新加载docker.server文件并重启docker服务
systemctl daemon-reload
systemctl restart docker
2.配置Dockerfile配置文件
在项目/src/main下增加docker目录,并在该目录下新增Dockerfile文件
内容如下
FROM java:8
MAINTAINER Sunny 306509906@qq.com
VOLUME /tmp
ADD application-server.jar app.jar
RUN bash -c 'touch /app.jar'
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
EXPOSE 28011
ENTRYPOINT ["java", "-jar", "app.jar"]
注意:
- VOLUME:指定了临时文件目录为
/tmp
。其效果是在主机/var/lib/docker
目录下创建了一个临时文件,并链接到容器的/tmp
。改步骤是可选的,如果涉及到文件系统的应用就很有必要了。/tmp
目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp
作为工作目录
pom.xml增加配置
<!-- Docker -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<!-- 将插件绑定在某个phase执行 -->
<executions>
<execution>
<id>build-image</id>
<!-- 用户只需执行mvn package ,就会自动执行mvn docker:build -->
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- 指定生成的镜像名 -->
<imageName>${docker.registry}/${project.build.finalName}</imageName>
<!-- 指定标签 -->
<imageTags>
<imageTag>${project.version}</imageTag>
</imageTags>
<!-- 指定 Dockerfile 路径 -->
<dockerDirectory>src/main/docker</dockerDirectory>
<!-- 指定远程 docker api地址 -->
<dockerHost>http://47.92.145.192:2375</dockerHost>
<resources>
<resource>
<targetPath>/</targetPath>
<!-- jar包所在的路径此处配置的对应target目录 -->
<directory>${project.build.directory}</directory>
<!-- 需要包含的jar包,这里对应的是Dockerfile中添加的文件名 -->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
注意:
- imageName:如果要推送到私有镜像库,则前面要加上ip地址和端口
- imageName:名称的格式只允许大小写字母、数字、以及中划线,否则报错InternalServerErrorException:http 500
3.执行maven clean package命令构建
package后docker就直接发布到了docker server上,使用命令
docker images
查看是否发布成功,然后通过docker push到私有镜像库即可