本文档记录使用dockerMaven插件去部署项目。
开启docker的远程访问
修改文件
vi /lib/systemd/system/docker.service
在ExecStart=后面加上
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
然后就保存退出。
刷新配置重启服务
systemctl daemon-reload
systemctl restart docker
使用 netstart -tnlp 查看端口使用情况。可以看到2375端口已开。
使用idea拦截docker.测试是否可以远程连接,可以显示远端的容器镜像,即为连接成功。
配置docker的maven插件
在工程的pom文件中加入如下插件
<build>
<finalName>app</finalName>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<!--生成的镜像的名称-->
<imageName>myfirstApp-java8:${project.artifactId}:${project.version}</imageName>
<!--基于哪个镜像去生成-->
<baseImage>jdk1.8</baseImage>
<!--启动容器后自动执行命令-->
<entryPoint>["java","-jar","/${project.build.finalName}.jar"]</entryPoint>
<resources>
<!--配置把本项目打包的jar上传容器的根目录。相当于语句: add app.jar / -->
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<dockerHost>http://192.168.211.130:2375</dockerHost>
</configuration>
</plugin>
</plugins>
</build>
使用maven命令生成镜像
使用下列命令生成镜像
mvn docker:build
注意:如果报错 500: HTTP 500 Internal Server Error。需要镜像的名称imageName. 只能是小写或数字。 only [a-z0-9-_.] are allowed
修改镜像名后,重新build. 然后在服务器中查看镜像已经生成。
运行镜像为容器
使用下列命令,运行容器
docker run -di --name=myfirstapp -p 8082:8082 my-first-app20220830
查看容器运行情况。如果容器没启动,可以生成的有问题的容器删除掉,
使用下列查看原因。 会出现错误原因
docker run -it --name=my-first-app -p 8082:8082 my-first-app20220830:0.0.1-SNAPSHOT /bash/bin