通过maven插件推送docker镜像

前面已经给大家简单的认识了docker,以及如何通过dockerfile创作一个镜像,和推送镜像到私仓。这篇回到springcloud开发的后端微服务怎么通过docker来制作镜像和推送镜像

这里我以我的网关服务为例 ,我要准备从我本地的开发机(不用安装docker),通过远程到远程安装好docker的机器上进行创建镜像并推送到私仓里。

第一步,肯定是要让安装了docker的机器可以允许远程调用
那么在要在这个远程台上先开放一个远程端口

{
"hosts":["tcp://0.0.0.0:2375","unix:///var/run/docker.sock"],   #这里0.0.0.0表示给所有IP,开放2375端口
"insecure-registries":["192.168.1.14"] 
}

然后重启docker,这样就可以远程调用本机器的docker

systemctl daemon-reload
systemctl restart docker

第二步,在开发机的项目文件中建一个文件夹同样新建一个Dockerfile文件,用于制作镜像
在这里插入图片描述
在文件中编写内容

FROM 192.168.1.14/common/jdk:jdk8   --这是我提前制作好的包含Jdk8的基础镜像
ENV PROJECT_FILENAME gateway-server-1.2.9-SNAPSHOT.jar
USER root
ADD $PROJECT_FILENAME /$PROJECT_FILENAME
VOLUME /tmp/mclog
COPY wait-for-it.sh /opt/
RUN chmod +x /opt/wait-for-it.sh
ENV SPRING_PROFILES_ACTIVE prod
ENV JAVA_OPTS ""
ENV DOCKER_SUPPORT  "-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap  -XX:+UseContainerSupport -XX:MaxRAMPercentage=75.0"
EXPOSE 8081
ENTRYPOINT /opt/wait-for-it.sh 127.0.0.1:8848 -- java ${JAVA_OPTS} ${DOCKER_SUPPORT}  -Dspring.profiles.active=${SPRING_PROFILES_ACTIVE}  -jar /$PROJECT_FILENAME > /tmp/mclog/gateway.log

这里格外提一下复制进去的这个wait-for-it.sh可执行文件,这是开源的的个shell文件,下载地址https://gitcode.net/mirrors/vishnubob/wait-for-it?utm_source=csdn_github_accelerator,由于我们各微服务运行前需要判断注册中心nacos是否启用,这个工具持续判断nacos的8848端口是否可用,可用后执行–后面的 java xxx -jar xxx这一串命令

编写好之后,我们在POM文件中引用docker-maven-plugin这个插件

 <plugins>
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.2.2</version>
                <executions>
                    <execution>
                        <id>build-image</id>
                        <phase>deploy</phase>   <!--在mvn deploy 这个阶段执行下面的build,push-->
                        <goals>
                            <goal>build</goal>
                            <goal>push</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <!--这是开放远程创建镜像的docker机器IP-->
                    <dockerHost>192.168.1.14:2375</dockerHost> 
                      <!--替换成你的私仓,项目名,仓库名和其它参数 ,这里都是我的-->
                    <imageName>192.168.1.14/私仓上项目名/${project.name}:${project.version}
                    </imageName>
                   <!--你的Dockerfile所在目录-->
                    <dockerDirectory>${project.build.directory}/docker</dockerDirectory>
                    <resources>
                        <resource>
                            <directory>${project.build.directory}</directory> 
                            <include>${project.build.finalName}.${project.packaging}</include>
                        </resource>
                    </resources>
                      <!--这里是docker私仓的帐号密码serverid,一般配置在maven的setting.xml的server节点中-->
                    <serverId>your-docker-registry</serverId>
                    <registryUrl>${docker.repostory}</registryUrl>
                    <noCache>true</noCache>
                    <forceTags>true</forceTags>
                </configuration>
            </plugin>
        </plugins>

maven,setting.xml中配置

<servers>
     <server>
      <id>your-docker-registry</id>
      <username>repouser</username>
      <password>repopwd</password>
    </server>
</servers>

上面我已加上注释
最后执行mvn deploy进行构建部署并推送到私仓

docker deploy 

对于快照版本,构建jar成品时,注意一定要大写的SNAPSHOT ,否则会被当作release推到到Maven仓库

接下来会讲解如何用docker-compose作容器的编排

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值