Maven集成Docker插件发布镜像到远程仓库


Maven发布Docker镜像

使用过Docker的同学都清楚,Docker容器是基于镜像Image来运行的。所以我们前提条件是要会熟悉如何制作镜像。制作镜像最简单的方式就是通过Docker自带的docker build、tag、push等相关的命令操作(具体命令看下面)。还有就是本文所描述法人通过maven的Docker插件来实现基于源码来实现一键镜像Image发布到远程仓库(Docker Hub、阿里云仓库等)。


使用docker命令发布镜像:这条命令需要在Dockerfile文件所在路劲下执行。

docker build -t testhub.cloud.net/test/redis:3.6 ./ && docker push testhub.cloud.net/test/redis:3.6

一、项目结构

在这里插入图片描述

二、Dockerfile文件

所在目录结构看上图

  • Dockerfile文件
FROM openjdk:11
#容器中工作目录
WORKDIR /docker-work
#将本地jar包copy到容器根目录下
ADD  /target/test.jar /test.jar
#将本地启动脚本copy到容器中
ADD src/main/docker/run.sh  /bin/run.sh
#授权脚本,否则无法执行
RUN chmod +x /bin/run.sh
CMD ["/bin/run.sh"]
  • run.sh文件
#! /bin/bash
echo "Start test Server..."
java -jar /test.jar

三、POM文件

注意一下是pom.xml局部配置,基于自己的pom加入一下内容

    <!--注意:
    下面会使用这个version标签值作为发布镜像Image的版本。
    类似:redis:3.6后面的3.6
    -->
    <version>v1.0.0</version>

    <properties>
        <docker.username>你的docker仓库的用户名</docker.username>
        <docker.password>你的docker仓库的密码</docker.password>
        <!--类似:registry.cn-hangzhou.aliyuncs.com-->
        <docker.registry.url>你的仓库地址</docker.registry.url>
        <!--类似:redis-->
        <docker.namespace>仓库命名空间</docker.namespace>
    </properties>
    
    <build>
        <finalName>test</finalName>
        <plugins>
            <!--SpringBoot自带打包插件-->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!--Dokcer发布镜像插件-->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>dockerfile-maven-plugin</artifactId>
                <configuration>
                    <username>${docker.username}</username>
                    <password>${docker.password}</password>
                    <!--类似:registry.cn-hangzhou.aliyuncs.com/cache/redis:3.6-->
                    <repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository>
                    <tag>${project.version}</tag>
                    <buildArgs>
                        <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                    </buildArgs>
                    <skip>false</skip>
                </configuration>
            </plugin>
        </plugins>
    </build>

四、发布镜像

注意:以下命令需要在pom.xml所在路径下执行

git pull && mvn clean install dockerfile:build dockerfile:push

五、发布成功

发布成功之后就可以在仓库上看到自己的镜像了。

  • 10
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用MavenDocker插件,首先需要在Maven项目的pom.xml文件中添加插件配置。以下是一些示例配置,供您参考: ``` <build> <plugins> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.2.0</version> <executions> <execution> <id>docker-build</id> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution> <execution> <id>docker-push</id> <phase>deploy</phase> <goals> <goal>push</goal> </goals> </execution> </executions> <configuration> <imageName>mydockerimage</imageName> <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <includes> <include>${project.build.finalName}.jar</include> </includes> </resource> </resources> </configuration> </plugin> </plugins> </build> ``` 这个配置告诉Maven Docker插件打包阶段构建和打标签Docker镜像,并在部署阶段将Docker镜像推送到Docker Registry。 然后,在终端中运行以下命令: ``` mvn clean package docker:build -DskipTests ``` 这将执行以下操作: - 清除Maven目标文件夹。 - 打包Maven项目。 - 使用Maven Docker插件构建Docker镜像。 - 跳过运行测试。 如果需要将Docker镜像推送到Docker Registry,可以运行以下命令: ``` mvn docker:push ``` 这将使用Maven Docker插件将构建好的Docker镜像推送到Docker Registry。 希望这些信息能够对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值