使用Maven打包通过Docker镜像发布SpringCloud项目,镜像推送Docker私服Harbor 详情记录

公司的技术结构最近正在升级,技术体系主要就是SpringCloud的一套,发布主要采用k8s+docker的方式去发布,这里主要讲解记录笔者使用官方推荐的一款插件:dockerfile-maven-plugin 对SpringCloud项目进行打包、把镜像发布到Docker镜像仓库私服Harbor上、拉取指定版本镜像、启动项目的一套流程是怎么操作的。

环境准备

电脑上需要安装Docker Desktop:官方下载地址
安装前注意Docker Desktop对Windows电脑系统要求是专业版或者企业版。并且在系统版本要求是1903+
作者这里Harbor也就是Docker私服的地址是10.135.170.238 端口是80 所以可以把80省略掉

引入依赖,定义Docker打包插件

这里就不讲SpringCloud项目搭建了,在需要打包的项目pom.xml里build内增加引入依赖

完整的build内容:

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot-maven-plugin.version}</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal><!--可以把依赖的包都打包到生成的Jar包中-->
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- Dockerfile 打包插件 -->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>dockerfile-maven-plugin</artifactId>
                <version>1.4.10</version>
                <executions>
                    <execution>
                        <id>default</id>
                        <goals>
                            <goal>build</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <repository>10.135.170.238/springcloud/${artifactId}</repository>
                    <dockerInfoDirectory>${pom.basedir}/src/main/docker</dockerInfoDirectory>
                    <buildArgs>
                        <JAR_FILE>target/${project.build.finalName}-${project.version}.jar</JAR_FILE>
                    </buildArgs>
                </configuration>
            </plugin>
        </plugins>
    </build>

定义Dokcerfile

为了方便后面启动项目时环境的切换以及服务之间的调用,这里给镜像定义两个输入参数

  • profile 对应spring.profiles.active 用来做配置文件环境切换
  • clientIp对应spring.cloud.nacos.discovery.ip用来配置注册中心的注册表内的服务对应真实IP,如果不配置该选项,默认服务会使用docker内置网络的ip地址。会导致服务之间调用失败的问题
FROM openjdk:8-jdk-alpine
MAINTAINER yangxiaohui<yxh_china@163.com>
VOLUME /tmp
ARG JAR_FILE
ENV profile "dev"
ENV clientIp "127.0.0.1"
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo "Asia/Shanghai" > /etc/timezone
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar", "--spring.profiles.active=${profile}","--spring.cloud.nacos.discovery.ip=${clientIp}"]

打包Docker镜像

使用控制台打开项目目录,执行命令mvn clean package dockerfile:build
输出BUILD SUCCESS,打包成功
在这里插入图片描述
控制台输入docker images查看镜像
在这里插入图片描述

使用镜像启动一个容器测试

启动命令:

docker run -d -p 9009:9009 -e "profile=pro" -e "clientIp=192.168.21.67" --name ces 10.135.170.238/springcloud/gateway-server:1.0-SNAPSHOT

查看运行的容器:docker ps

image-20200805091858640

然后访问http://127.0.0.1:9009这里没有定义首页,所以输出404,正常,能够正常访问项目

image-20200805091952647

上传镜像到Docker镜像仓库私服Harbor

  1. 配置本地Docker 仓库私服地址

    找到Docker的图标,鼠标右键选择settings然后在弹出的界面选择Docker Engine

    image-20200805092516766

  2. 终端登录Docker镜像仓库私服

    命令行终端输入docker login 10.135.170.238,然后根据提示输入UserName和Password

    image-20200805092903831

  3. 推送镜像到镜像仓库私服

    命令行终端输入docker push 10.135.170.238/springcloud/gateway-server

    image-20200805093145996

    至此,镜像打包成功并且能够成功运行,也上传到了镜像仓库。我们用k8s或者docker手动启动就方便多了,只需要docker pull 10.135.170.238/springcloud/gateway-server就能把镜像拉取下来。

初次写SpringCloud使用Docker打包到发布的流程,如果有不明白的或者打包过程中有什么问题的,欢迎留言交流

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清晨先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值