微服务CI/CD实践系列:
微服务CI/CD实践(一)环境准备及虚拟机创建
微服务CI/CD实践(二)服务器先决准备
微服务CI/CD实践(三)Jenkins部署及环境配置
微服务CI/CD实践(四)Jenkins + Dokcer 部署微服务前端VUE项目
微服务CI/CD实践(五)Jenkins + Dokcer 部署微服务后端项目
文章目录
后端微服务项目是基于JDK1.8 + SpringCloudAlibaba框架开发,我们通过Jenkins流水线作业将后端工程打包成Docker镜像的方式进行部署。构建部署流程如下:
- 拉取代码
- jenkins服务器maven编译代码
- 使用dockerfile构建镜像并打包镜像
- 上传镜像包
- 执行sh
一、先决条件
1.1 服务器先决条件
Jenkins 和 server服务器先决条件参考微服务CI/CD实践(二)服务器先决准备 和 微服务CI/CD实践(四)Jenkins部署及环境配置
1.2 项目配置
后端项目基于maven Dockerfile 构建镜像。
1.2.1 Dockerfile
# docker image deploy
FROM openjdk:8-jdk-alpine
COPY /uaa-center-server/target/app.jar /app.jar
ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=dev","/app.jar"]
上述配置仅是一个最基本Java工程镜像构建脚本,如果需要集成其他插件需要对应修改脚本
以下示例展示了如何通过Dockerfile集成arshs 和 skywalking:
FROM openjdk:8-jdk-alpine
COPY /uaa-center-server/target/app.jar /app.jar
# copy arthas
COPY ‐‐from=hengyunabc/arthas:latest /opt/arthas /opt/arthas
# copy skywalking
COPY /uaa-center-server/agent /usr/local/agent
# 这里可以传递skywalking‐agent 配置
ENTRYPOINT [ "sh", "‐c", "java ‐javaagent:/usr/local/agent/skywalking‐agent.jar ‐
Dskywalking.agent.service_name=yourappname ‐
Dskywalking.collector.backend_service=xx.xx.xx.xx:11800 ‐Dspring.profiles.active=dev ‐
jar /app.jar" ]
可以在ENTRYPOINT 端点指定相关agent配置,也可以在docker run执行脚本中指定。
1.2.2 pom配置
后端工程pom添加maven打包依赖:
<build>
<finalName>app</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot-dependencies.version}</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version> <!-- 使用与你的 Maven 版本兼容的版本 -->
<configuration>
<source>1.8</source>
<target>1.8</target>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version> <!-- 使用与你的 Maven 版本兼容的版本 -->
</path>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${org.mapstruct.version}</version>
</path>
</annotationProcessorPaths>
<compilerArgs>
<arg>-Aprojectlombok.classpath=${project.build.outputDirectory}

Jenkins & Docker 自动化构建部署Java微服务&spm=1001.2101.3001.5002&articleId=140997340&d=1&t=3&u=fe165b9704954512ad27f966314ba38e)
1万+

被折叠的 条评论
为什么被折叠?



