JavaWeb_LeadNews_Day12-jenkins
- 后端项目部署
- 多环境配置切换
- 服务集成docker配置
- 父工程项目构建
- 构建微服务
- 部署服务到远程服务器
- 整体思路
- 安装私有仓库
- jenkins插件
- 部署服务
- 准备工作
- 部署服务
- jenkins触发器
- 来源
- Gitee
后端项目部署
多环境配置切换
- 在微服务中的
bootstrap.yml
中新增配置spring: ... pofiles: active: dev
- 在nacos的配置中心中新增各个环境的配置文件, 例如user微服务中新增
- leadnews-user-dev.yml
- leadnews-user-prod.yml
服务集成docker配置
- 服务集成docker配置, 引入依赖
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>heima-leadnews-service</artifactId> <groupId>com.heima</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>heima-leadnews-user</artifactId> <properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> <docker.image>docker_storage</docker.image> </properties> <build> <finalName>heima-leadnews-user</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.0</version> <configuration> <source>${java.version}</source> <target>${java.version}</target> </configuration> </plugin> <plugin> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>1.3.6</version> <configuration> <repository>${docker.image}/${project.artifactId}</repository> <buildArgs> <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE> </buildArgs> </configuration> </plugin> </plugins> </build> </project>
- 服务集成dockerfile文件
# 设置JAVA版本 FROM java:8 # 指定存储卷, 任何向/tmp写入的信息都不会记录到容器存储层 VOLUME /tmp # 拷贝运行JAR包 ARG JAR_FILE COPY ${JAR_FILE} app.jar # 设置JVM运行参数, 这里限定下内存大小,减少开销 ENV JAVA_OPTS="\ -server \ -Xms256m \ -Xmx512m \ -XX:MetaspaceSize=256m \ -XX:MaxMetaspaceSize=512m" #空参数,方便创建容器时传参 ENV PARAMS="" # 入口点, 执行JAVA运行命令 ENTRYPOINT ["sh","-c","java -jar $JAVA_OPTS /app.jar $PARAMS"]
父工程项目构建
- 新建项目
- 项目名称, 选择自由项目
- 项目描述
- git地址, 选择凭证
- 创建凭证(不对, 要用码云的账号密码, 但是好像没什么关系, 所以懒得改了, o.O)
- maven构建
- 构建项目
构建微服务
- 新建项目
- git地址, 凭证
- maven命令
clean install -Dmaven.test.skip=true dockerfile:build -f heima-leadnews-service/heima-leadnews-user/pom.xml
- shell脚本
if [ -n "$(docker ps -a -f name=$JOB_NAME --format '{{.ID}}' )" ] then #删除之前的容器 docker rm -f $(docker ps -a -f name=$JOB_NAME --format '{{.ID}}' ) fi # 清理镜像 docker image prune -f # 启动docker服务 docker run -d --net=host -e PARAMS="--spring.profiles.active=prod" --name $JOB_NAME docker_storage/$JOB_NAME
- 总结
ACCESS DENIED FOR USER 'ROOT'@'IP地址'
错误可能是数据库密码没有正确输入
部署服务到远程服务器
整体思路
安装私有仓库
- 拉取Registry镜像
docker pull registry:latest
- 创建Registry容器
docker run -d -p 5000:5000 --name registry -v /usr/local/docker/registry:/var/lib/registry registry:latest
- 访问测试
http://192.168.174.135:5000/v2/_catalog
- 配置Docker客户端
正常生产环境中使用, 要配置HTTPS服务, 确保安全,内部开发或测试集成的局域网环境,可以采用简便的方式, 不做安全控制。vi /lib/systemd/system/docker.service # 修改内容 ExecStart=/usr/bin/dockerd --insecure-registry 192.168.174.135:5000 # 重启生效 systemctl daemon-reolad systemctl restart docker.service
jenkins插件
- 安装插件
- Publish Over SSH
- SSH plugin
- 配置远程服务器连接
位置:
添加凭据:
1.
2.
3.
配置ssh连接:
部署服务
准备工作
- 在article微服务中集成docker配置(如上服务集成docker配置)
- bootstrap.yml
spring: profiles: active: prod
- nacos添加
-prod
配置文件, 修改数据库地址和密码
部署服务
- 新建项目
- 设置参数
- git地址
- maven构建命令
- shell构建命令
- 远程服务器命令
jenkins触发器
- 远程触发
- 其他项目构建后触发
- 定时触发
- 轮询触发
来源
黑马程序员. 黑马头条
Gitee
https://gitee.com/yu-ba-ba-ba/leadnews