文章目录
- 1、docker服务端开启远程访问
- 2、在pom.xml文件plugins下添加Maven的docker插件
- 3、编写dockerfile文件
- 4、执行maven的打包命令
- 5、查看 镜像 ebuy-docker:v2.0
- 6、创建 容器 ebuy-dockerv2.0
上面手动构建镜像的过程比较繁琐,使用Maven的docker插件可以实现镜像的自动化部署。
步骤:
1、开启docker服务端的远程访问
2、在pom.xml文件中添加Maven的docker插件
3、在工程的根目录下创建dockerfile文件
4、使用maven的打包命令进行打包
5、创建容器并访问
实操:
1、docker服务端开启远程访问
#修改该文件
vim /lib/systemd/system/docker.service
#找到ExecStart行,修改成如下内容
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H fd:// --containerd=/run/containerd/containerd.sock
#重启守护进程
systemctl daemon-reload
#重启docker
systemctl restart docker
[root@localhost ~]# vim /lib/systemd/system/docker.service
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker
2、在pom.xml文件plugins下添加Maven的docker插件
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.2</version>
<!--将插件绑定在某个phase执行-->
<executions>
<execution>
<id>build-image</id>
<!--将插件绑定在package这个phase(阶段)上。也就是说,用户只需执行mvn package,就会自动执行mvn docker:build-->
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<!--指定生成的镜像名-->
<imageName>${project.artifactId}</imageName>
<!--指定标签,也就是版本号,可以自定义-->
<imageTags>
<imageTag>v2.0</imageTag>
</imageTags>
<!--指定远程 docker api地址 也就是服务器ip+docker的端口号-->
<dockerHost>http://192.168.74.148:2375</dockerHost>
<!-- 指定 dockerfile 路径-->
<dockerDirectory>${project.basedir}</dockerDirectory>
<!-- 是否跳过docker构建 -->
<skipdockerBuild>false</skipdockerBuild>
</configuration>
</plugin>
3、编写dockerfile文件
注意:dockerfile文件 和 pom.xml 处于同一个目录、关闭防火墙
FROM centos7-jdk17
MAINTAINER atguigu
EXPOSE 8081
ADD target/ebuy-docker-1.0-SNAPSHOT.jar /ebuy-docker-1.0-SNAPSHOT.jar
WORKDIR /
ENTRYPOINT ["java" , "-jar" , "ebuy-docker-1.0-SNAPSHOT.jar"]
4、执行maven的打包命令
# 打包跳过测试
mvn clean package -DskipTests
# 打包跳过测试的同时跳过构建
mvn clean package -DskipTests -DskipdockerBuild
5、查看 镜像 ebuy-docker:v2.0
6、创建 容器 ebuy-dockerv2.0
docker run -d \
--name ebuy-dockerv2.0 \
-p 8082:8081 \
ebuy-docker:v2.0
[root@localhost ~]# docker run -d \
> --name ebuy-dockerv2.0 \
> -p 8082:8081 \
> ebuy-docker:v2.0
ed751397ce5335b0d20c357e7a185e6dc92d0a48e4f3839d605245d93ebc1747
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ed751397ce53 ebuy-docker:v2.0 "java -jar ebuy-dock…" 21 seconds ago Up 20 seconds 0.0.0.0:8082->8081/tcp, :::8082->8081/tcp ebuy-dockerv2.0
903246a96cb1 portainer/portainer "/portainer" 22 hours ago Up 30 minutes 8000/tcp, 9443/tcp, 0.0.0.0:10010->9000/tcp, :::10010->9000/tcp portainer
99bdd2331b79 mongo:7.0.0 "docker-entrypoint.s…" 28 hours ago Up 30 minutes 0.0.0.0:27017->27017/tcp, :::27017->27017/tcp mongodb
8c71efe9dca7 wurstmeister/zookeeper "/bin/sh -c '/usr/sb…" 5 weeks ago Up 30 minutes 22/tcp, 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, :::2181->2181/tcp zookeeper
c14772057ab8 redis "docker-entrypoint.s…" 9 months ago Up 30 minutes 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp spzx-redis
ab66508d9441 mysql:8 "docker-entrypoint.s…" 9 months ago Up 30 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp spzx-mysql