docker - maven 插件自动构建镜像(构建镜像:ebuy-docker:v2.0)

时间:2024-09-30 07:24:26

文章目录

  • 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

在这里插入图片描述