使用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.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
                <version>${spring-boot-maven-plugin.version}version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackagegoal>
                        goals>
                    execution>
                executions>
            plugin>
            
            <plugin>
                <groupId>com.spotifygroupId>
                <artifactId>dockerfile-maven-pluginartifactId>
                <version>1.4.10version>
                <executions>
                    <execution>
                        <id>defaultid>
                        <goals>
                            <goal>buildgoal>
                        goals>
                    execution>
                executions>
                <configuration>
                    <repository>10.135.170.238/springcloud/${artifactId}repository>
                    <dockerInfoDirectory>${pom.basedir}/src/main/dockerdockerInfoDirectory>
                    <buildArgs>
                        <JAR_FILE>target/${project.build.finalName}-${project.version}.jarJAR_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
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,打包成功
使用Maven打包通过Docker镜像发布SpringCloud项目,镜像推送Docker私服Harbor 详情记录_第1张图片
控制台输入docker images查看镜像
使用Maven打包通过Docker镜像发布SpringCloud项目,镜像推送Docker私服Harbor 详情记录_第2张图片

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

启动命令:

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,正常,能够正常访问项目

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

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

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

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

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

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

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

    image-20200805092903831

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

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

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

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

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

你可能感兴趣的:(笔记,Docker,SpringCloud,Docker,Harbor,镜像仓库,发布Docker)