JavaWeb_LeadNews_Day12-jenkins

JavaWeb_LeadNews_Day12-jenkins

  • 后端项目部署
    • 多环境配置切换
    • 服务集成docker配置
    • 父工程项目构建
    • 构建微服务
    • 部署服务到远程服务器
      • 整体思路
      • 安装私有仓库
      • jenkins插件
      • 部署服务
        • 准备工作
        • 部署服务
  • jenkins触发器
  • 来源
  • Gitee

后端项目部署

多环境配置切换

  1. 在微服务中的bootstrap.yml中新增配置
    spring:
      ...
      pofiles:
        active: dev
    
  2. 在nacos的配置中心中新增各个环境的配置文件, 例如user微服务中新增
    • leadnews-user-dev.yml
    • leadnews-user-prod.yml

服务集成docker配置

  1. 服务集成docker配置, 引入依赖
    
    <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-serviceartifactId>
            <groupId>com.heimagroupId>
            <version>1.0-SNAPSHOTversion>
        parent>
        <modelVersion>4.0.0modelVersion>
    
        <artifactId>heima-leadnews-userartifactId>
    
        <properties>
            <maven.compiler.source>8maven.compiler.source>
            <maven.compiler.target>8maven.compiler.target>
            <docker.image>docker_storagedocker.image>
        properties>
    
        <build>
            <finalName>heima-leadnews-userfinalName>
            <plugins>
                <plugin>
                    <groupId>org.springframework.bootgroupId>
                    <artifactId>spring-boot-maven-pluginartifactId>
                    <executions>
                        <execution>
                            <goals>
                                <goal>repackagegoal>
                            goals>
                        execution>
                    executions>
                plugin>
                <plugin>
                    <groupId>org.apache.maven.pluginsgroupId>
                    <artifactId>maven-compiler-pluginartifactId>
                    <version>3.7.0version>
                    <configuration>
                        <source>${java.version}source>
                        <target>${java.version}target>
                    configuration>
                plugin>
                <plugin>
                    <groupId>com.spotifygroupId>
                    <artifactId>dockerfile-maven-pluginartifactId>
                    <version>1.3.6version>
                    <configuration>
                        <repository>${docker.image}/${project.artifactId}repository>
                        <buildArgs>
                            <JAR_FILE>target/${project.build.finalName}.jarJAR_FILE>
                        buildArgs>
                    configuration>
                plugin>
            plugins>
        build>
    
    project>
    
  2. 服务集成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"]
    

父工程项目构建

  1. 新建项目
    JavaWeb_LeadNews_Day12-jenkins_第1张图片
  2. 项目名称, 选择自由项目
    JavaWeb_LeadNews_Day12-jenkins_第2张图片
  3. 项目描述
    JavaWeb_LeadNews_Day12-jenkins_第3张图片
  4. git地址, 选择凭证
    JavaWeb_LeadNews_Day12-jenkins_第4张图片
  5. 创建凭证(不对, 要用码云的账号密码, 但是好像没什么关系, 所以懒得改了, o.O)
    JavaWeb_LeadNews_Day12-jenkins_第5张图片
  6. maven构建
    JavaWeb_LeadNews_Day12-jenkins_第6张图片
  7. 构建项目
    JavaWeb_LeadNews_Day12-jenkins_第7张图片

构建微服务

  1. 新建项目
    JavaWeb_LeadNews_Day12-jenkins_第8张图片
  2. git地址, 凭证
    JavaWeb_LeadNews_Day12-jenkins_第9张图片
  3. maven命令
    JavaWeb_LeadNews_Day12-jenkins_第10张图片
    clean install -Dmaven.test.skip=true  dockerfile:build -f heima-leadnews-service/heima-leadnews-user/pom.xml
    
  4. shell脚本
    JavaWeb_LeadNews_Day12-jenkins_第11张图片
    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
    
  5. 总结
    • ACCESS DENIED FOR USER 'ROOT'@'IP地址'错误可能是数据库密码没有正确输入

部署服务到远程服务器

整体思路

JavaWeb_LeadNews_Day12-jenkins_第12张图片

安装私有仓库

  1. 拉取Registry镜像
    docker pull registry:latest
    
  2. 创建Registry容器
    docker run -d -p 5000:5000 --name registry -v /usr/local/docker/registry:/var/lib/registry registry:latest
    
  3. 访问测试
    http://192.168.174.135:5000/v2/_catalog
    
  4. 配置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插件

  1. 安装插件
    • Publish Over SSH
    • SSH plugin
  2. 配置远程服务器连接
    位置:
    JavaWeb_LeadNews_Day12-jenkins_第13张图片
    添加凭据:
    1.
    JavaWeb_LeadNews_Day12-jenkins_第14张图片
    2.
    JavaWeb_LeadNews_Day12-jenkins_第15张图片
    3.
    JavaWeb_LeadNews_Day12-jenkins_第16张图片
    配置ssh连接:
    JavaWeb_LeadNews_Day12-jenkins_第17张图片

部署服务

准备工作

  1. 在article微服务中集成docker配置(如上服务集成docker配置)
  2. bootstrap.yml
    spring:
      profiles:
        active: prod
    
  3. nacos添加-prod配置文件, 修改数据库地址和密码

部署服务

  1. 新建项目
    JavaWeb_LeadNews_Day12-jenkins_第18张图片
  2. 设置参数
    JavaWeb_LeadNews_Day12-jenkins_第19张图片
  3. git地址
    JavaWeb_LeadNews_Day12-jenkins_第20张图片
  4. maven构建命令
    JavaWeb_LeadNews_Day12-jenkins_第21张图片
  5. shell构建命令
    JavaWeb_LeadNews_Day12-jenkins_第22张图片
  6. 远程服务器命令
    JavaWeb_LeadNews_Day12-jenkins_第23张图片

jenkins触发器

  1. 远程触发
    JavaWeb_LeadNews_Day12-jenkins_第24张图片
  2. 其他项目构建后触发
    JavaWeb_LeadNews_Day12-jenkins_第25张图片
  3. 定时触发
    JavaWeb_LeadNews_Day12-jenkins_第26张图片
  4. 轮询触发
    JavaWeb_LeadNews_Day12-jenkins_第27张图片

来源

黑马程序员. 黑马头条

Gitee

https://gitee.com/yu-ba-ba-ba/leadnews

你可能感兴趣的:(JavaWeb开发,#,jenkins,java,spring,cloud,spring,boot,docker,后端,运维)