前言
该篇文章主要是harbor仓库创建和使用,如果需要看docker创建部署可以看第一篇文章。通过下面四篇文章可以快速的实现项目运维部署管理,大大减少项目维护的工作量
该专栏主要为介绍通过docker compose实现容器编排部署
一、修改maven配置
我们本地如果安装了docker环境则不用做处理,直接调用本地环境进行打包制作镜像发布;但很多时候我们本地不一定会安装docker的环境,这时候我们就需要通过配置远程连接服务器的方式进行打包制作镜像。
打开idea设置,进入Settings > Build, Execution, Deployment > Build Tools > Maven > Runner,配置环境变量:
DOCKER_TLS_VERIFY
:启用安全验证DOCKER_HOST
:服务器docker的地址DOCKER_CERT_PATH
:远程的服务器docker的加密证书地址
DOCKER_TLS_VERIFY=1;DOCKER_HOST=https://10.37.129.2:2376;DOCKER_CERT_PATH=/Library/zheng/docker/tls
二、配置pom.xml文件
下面配置由几部分组成:
<properties>
主要用来读取版本声明和harbor仓库域名地址<plugins>
用来声明插件集合,主要包括了maven打包的插件以及docker构建插件
下面的配置是可以直接粘贴使用的,只需要修改自己的harbor仓库的账号密码,以及项目名称即可
<properties>
<!-- docker镜像的版本号 -->
<image.tag.verion>1.0.1</image.tag.verion>
<!-- 远程harbor仓库的域名地址 -->
<docker.repostory>10.37.129.2:5000</docker.repostory>
<!-- harbor为这个项目创建的目录 -->
<harbor.project>ssyx</harbor.project>
</properties>
<build>
<finalName>${project.artifactId}</finalName> <!--jar包名字-->
<plugins>
<!-- Maven Compiler Plugin -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!-- 在此处添加 Maven 编译插件的配置,如果需要的话 -->
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Docker 构建插件 -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.13</version>
<executions>
<execution>
<id>default</id>
<!-- maven打包阶段就触发dockerfile-maven-plugin插件的以下动作 -->
<phase>package</phase>
<goals>
<goal>build</goal>
<goal>tag</goal>
<goal>push</goal>
</goals>
<configuration>
<!-- docker镜像版本号,引用上面的 -->
<tag>${image.tag.verion}</tag>
</configuration>
</execution>
</executions>
<configuration>
<!-- 指定dockerfile所在目录 -->
<contextDirectory>${project.basedir}</contextDirectory>
<!-- 指定docker镜像名,格式必须这样写, 注意:这里${docker.repostory}仓库地址必须有,因为docker需要这个去连接你真实仓库地址,否则就会连接到官方的docker.io仓库了, 镜像名称格式是:harbor仓库域名/子仓库/镜像名称,版本号由上面的tag动作标注 -->
<repository>${docker.repostory}/${harbor.project}/${project.artifactId}</repository>
<!-- 连接远程harbor仓库的用户名和密码 -->
<username>admin</username>
<password>Harbor12345</password>
<!-- 传递环境变量:JAR_FILE给dockerfile -->
<buildArgs>
<JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
</plugins>
</build>
</project>
三、创建Dockerfile配置文件
Dockerfile作用主要是构建docker的镜像使用,下面的代码大致的作用就是先指定基础镜像,因为是java应用,所以指定jdk作为启动环境,然后在读取本地maven打好的jar包,构建好一个镜像,最后在通过ENTRYPOINT
设置启动命令
需要注意FROM
引用的jdk镜像根据自己情况选择一个
# 设置JAVA版本,如果需要生成图片(验证码等),则需要使用 openjdk:8-jdk 这个基础镜像、
# openjdk:8-jre #如果只需要运行时环境则可以使用这个会比jdk的更小
# openjdk:8-jdk
FROM openjdk:8-jdk-alpine
# 接收pom.xml文件传递的变量
ARG JAR_FILE
# 注意WORKDIR指向的目录必须提前存在,否则后面复制文件的时候会失败,导致容器无法运行
RUN echo "JAR_FILE is: ${JAR_FILE}" && mkdir /app
WORKDIR /app
COPY target/${JAR_FILE} ./app.jar
RUN echo "ls result" && ls -l /app
ENTRYPOINT ["java","-Xms512m", "-Xmx1g", "-Dfile.encoding=UTF-8", "-jar", "app.jar"]
四、执行
最后点击package即可执行打包jar并且把jar包转为镜像发布到仓库