使用Maven来构建Docker镜像并上传到私服仓库

本文介绍了如何使用Maven结合Spotify Docker插件,构建Docker镜像,并将其推送到私服仓库。详细步骤包括在pom.xml中配置插件,开启Docker远程API,设置防火墙,执行mvn命令构建镜像,将Docker绑定到mvn其他命令,以及推送镜像到Docker Hub。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用Maven来构建Docker镜像并上传到私服仓库

    maven是一个强大的项目管理与构建工具,使用maven来构建docker镜像,并自动上传到私服仓库,那么就大大简化了工作。

看到网上大部分都是使用的Spotify公司的插件,这里我也选则此插件进行学习。

一 pom.xml中添加docker的插件
 <build>
        <plugins>
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.4.13</version>
                <configuration>
                   <forceTags>true</forceTags>    <!--覆盖相同标签镜像-->
                    <imageName>my/eureka:0.0.1</imageName>  <!--指定镜像名称 仓库/镜像名:标签-->
                    <baseImage>lwieske/java-8</baseImage>    <!--指定基础镜像,相当于dockerFile中的FROM<image> -->
                    <dockerHost>http://192.168.10.72:2375</dockerHost>  <!-- 指定仓库地址 -->
                    <entryPoint>["java","-jar","/${project.build.finalName}.jar"]</entryPoint> <!-- 容器启动执行的命令,相当于dockerFile的ENTRYPOINT -->
                    <resources>
                        <resource>                                             <!-- 指定资源文件 -->
                            <targetPath>/</targetPath>                         <!-- 指定要复制的目录路径,这里是当前目录 -->
                            <directory>${project.build.directory}</directory>  <!-- 指定要复制的根目录,这里是target目录 -->
                            <include>${project.build.finalName}.jar</include>  <!-- 指定需要拷贝的文件,这里指最后生成的jar包 -->
                        </resource>
                    </resources>
                </configuration>
            </plugin>
        </plugins>
    </build>
二 docker开启远程api端口

修改 /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

三 开启防火墙端口

firewall-cmd --zone=public 
### 单项目自动化构建 Docker 镜像推送至私服 Registry 教程 为了实现单项目的自动化构建 Docker 镜像镜像推送到私服 Registry,可以通过 Maven 插件 `docker-maven-plugin` 来完成这一过程。以下是详细的说明: #### 1. 添加依赖和插件到 `pom.xml` 在 Spring Boot 项目的 `pom.xml` 文件中,添加必要的依赖项和 `docker-maven-plugin` 插件。 ```xml <build> <plugins> <!-- Spring Boot Maven Plugin --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <!-- Docker Maven Plugin --> <plugin> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>1.4.13</version> <executions> <execution> <id>default</id> <goals> <goal>build</goal> <goal>push</goal> </goals> </execution> </executions> <configuration> <repository>${project.artifactId}</repository> <tag>${project.version}</tag> <buildArgs> <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE> </buildArgs> <dockerfile>Dockerfile</dockerfile> <url>http://your-docker-registry-url:5000</url> <!-- 替换为私服地址 --> <username>your-username</username> <!-- 如果需要认证 --> <password>your-password</password> <!-- 如果需要认证 --> </configuration> </plugin> </plugins> </build> ``` 此部分配置定义了如何构建 Docker 镜像以及将其推送到私服 Registry 的 URL 和凭证信息[^1]。 --- #### 2. 编写 Dockerfile 在同一目录下创建一个名为 `Dockerfile` 的文件,用于描述如何打包应用程序。 ```dockerfile FROM openjdk:17-jdk-slim ARG JAR_FILE=target/*.jar COPY ${JAR_FILE} app.jar ENTRYPOINT ["java", "-jar", "/app.jar"] ``` 该 Dockerfile 使用 OpenJDK 基础镜像将编译后的 `.jar` 文件复制到容器中作为入口程序[^1]。 --- #### 3. 构建和推送流程 执行以下命令来触发自动化的构建和推送操作: ```bash mvn clean package dockerfile:build dockerfile:push ``` 这条命令会依次清理旧的目标文件、重新打包应用、构建 Docker 镜像最终将镜像推送到指定的私服 Registry 中。 --- #### 4. 测试私服中的镜像 确认镜像已成功上传到私服后,可以使用以下方法验证其可用性: ##### 查询镜像标签列表 通过发送 HTTP 请求查询私服上的镜像及其对应的标签: ```bash curl -XGET http://your-docker-registry-url:5000/v2/your-repository/tags/list ``` 返回的结果类似于 JSON 格式的标签列表[^3]。 ##### 下载运行镜像 尝试从私服下载刚刚上传的镜像启动它: ```bash docker pull your-docker-registry-url:5000/your-repository:latest docker run -d -p 8080:8080 your-docker-registry-url:5000/your-repository:latest ``` 这一步可以帮助验证整个流程是否正常工作[^2]。 --- ### 注意事项 - **私服权限管理**:如果私服启用了身份验证,则需确保提供正确的用户名和密码。 - **网络连通性**:确保本地机器能够访问私服所在的服务器。 - **Docker 版本兼容性**:某些功能可能受限于特定版本的 Docker 或者 Docker Compose 工具链。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值