一、在要部署的微服务pom.xml中添加docker-maven-plugin插件
<properties>
<dockerfile.maven.version>1.3.7</dockerfile.maven.version>
<!--docker私服地址-->
<docker.registry.repository>141.189.59.135:5000</docker.registry.repository>
</properties>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>${dockerfile.maven.version}</version>
<executions>
<execution>
<id>default</id>
<goals>
<!--如果mvn package时不想用docker打包,就注释掉这个build-->
<goal>build</goal>
<goal>push</goal>
</goals>
</execution>
</executions>
<configuration>
<repository>${docker.registry.repository}/${project.artifactId}</repository>
<tag>${project.version}</tag>
<buildArgs>
<!--提供参数向Dockerfile传递-->
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
二、在要部署的web工程的根路径下创建Dockerfile文件
# 该镜像需要依赖的java8的镜像
FROM openjdk:8-jre
# /tmp目录用来持久化到docker数据文件夹,因为springboot使用的内嵌tomcat容器默认使用/tmp作为工作目录
VOLUME ["/tmp"]
# 设置容器暴露给外部的端口
EXPOSE 6060
# 编译镜像时将当前目录下的select-zuul-1.0.0-SNAPSHOT.jar包复制到docker容器的/目录下(更名为)app.jar
# ${JAR_FILE}为pom中属性
ADD ${JAR_FILE} app.jar
# 编译镜像时运行的脚本
#RUN bash -c 'touch /app.jar'
# 执行环境
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
# 该镜像的维护者
MAINTAINER xj1988/81584273@qq.com
其他:
// 项目目录结构
project
micro-service-eureka/
Dockerfile
pom.xml
micro-service-config/
Dockerfile
pom.xml
micro-service-zuul/
Dockerfile
pom.xml
...
三、服务器docker开启tcp管理端口
// 编辑docker.service
vim /usr/lib/systemd/system/docker.service
// 找到ExecStart=所在的那一行,在末尾添加
-H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375
//重新读取配置文件
systemctl daemon-reload
// 重启Docker
systemctl restart docker
// 确认端口2375是否启用
netstat -an | grep 2375
四、本地添加docker registry环境变量
// 打开windows终端执行
set DOCKER_HOST=tcp://服务器地址:2375