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



















