1、完成编码后,在pom文件中增加:
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<forceTags>true</forceTags>
<imageName>eureka:0.0.1</imageName> <!--指定镜像名称 仓库/镜像名:标签 -->
<baseImage>hub.c.163.com/library/java:8-alpine</baseImage>
<dockerHost>http://192.168.1.100:2375</dockerHost> <!-- 指定仓库地址 -->
<dockerDirectory>target</dockerDirectory>
<entryPoint>["java","-jar","/${project.build.finalName}.jar"]</entryPoint> <!-- 容器启动执行的命令,相当于dockerFile的ENTRYPOINT -->
<resources>
<resource>
<targetPath>target</targetPath>
<directory>${project.build.directory}</directory> <!-- 指定要复制的根目录,这里是target目录 -->
<include>${project.build.finalName}.jar</include> <!-- 指定需要拷贝的文件,这里指最后生成的jar包 -->
</resource>
</resources>
</configuration>
</plugin>
2、在target目录下,创建Dockerfile,内容如下
FROM hub.c.163.com/library/java:8-alpine
ADD target/eureka-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8761
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
如果想指定容器加载挂载目录的配置文件,启动命令可以这么写
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar","--spring.config.location=/home/conf/","--spring.config.name=application"]
说明:
a、--spring.config.location的值是容器内的配置文件目录
b.、--spring.config.name的是问配置文件目录内的配置文件名称(不含文件名后缀)
当有多个配置文件时,可以这么写--spring.config.name=bootstrap,application
c、编写dockerfile时,要学会使用[WORKDIR /home],即定位到该目录下
3、Linux服务器设置(选择哪个就看机器的配置文件了)
方式一:
修改 /etc/sysconfig/docker文件
vi /etc/sysconfig/docker
在最下面添加一行:
DOCKER_OPTS='-H unix:///var/run/docker.sock -H 0.0.0.0:2375'
再修改 /usr/systemd/system/docker.service
vi /usr/systemd/system/docker.service
在ExecStart后面添加 $DOCKER_OPTS \
重新加载配置文件 systemctl daemon-reload
重启docker systemctl restart docker
最后是防火墙了。
参考:
https://blog.csdn.net/qq_39623859/article/details/80072545
方式二:
想在windows中操作远程linux中的docker,那前提是必须
开启docker远程API,修改docker配置文件#vi /usr/lib/systemd/system/docker.service ,进入编辑模式后,将ExecStart这一行后面加上 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock ,改完后如下所示
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock ,这里就写4个0,你可别改成自己的ip哦,保存后退出,重新加载配置文件#systemctl daemon-reload ,启动docker #systemctl start docker ,
输入#netstat -anp|grep 2375 显示docker正在监听2375端口,输入#curl 127.0.0.1:2375/info 显示一大堆信息,证明远程api就弄好了
参考:https://blog.csdn.net/qq_34930488/article/details/80009197
4、打包、上传镜像
mvn install
mvn docker:build
加餐:maven docker 插件绑定 phase
参考:https://www.jianshu.com/p/683423f1ed3c