• CI/CD 容器服务准备


    服务器规划

    Linux 采用 Ubuntu Server X64 18.04 LTS 版本,配置及说明如下:

    主机名 IP CPU / 内存 磁盘 说明
    docker-database 192.168.1.130/24 2 核 512M
    docker-gitlab 192.168.1.131/24 2 核 1.5 G 20G 源码管理
    docker-nexus 192.168.1.132/24 2 核 2G 20G 仓库管理
    docker-harbor 192.168.1.133/24 2 核 512M 20G 镜像管理
    docker-service-cloud 192.168.1.188/24 2 核 2G 20G 服务部署

    image-20210926141632654

    image-20210926141800996

    虚拟机连接工具 Termius

    image-20210926142024811

    docker-admin

    docker-compose.yml

    version: '3.1'
    services:
      itoken-admin:
        image: harbor.seth.com/itoken/itoken-admin
        container_name: itoken-admin
        restart: always
        ports:
          - 8084:8084
        extra_hosts:
          - gitlab.seth.com:192.168.1.131
          - service.cloud.seth.com:192.168.1.188
    

    docker-service-cloud

    CI/CD 流程图

    image-20210826062644842

    基础设施集中部署,如下

    root@docker-service-cloud:/usr/local/docker# tree -L 1
    .
    ├── itoken-config
    ├── itoken-eureka
    ├── itoken-zipkin
    └── runner
    
    • itoken-config: 分布式配置中心
    • itoken-eureka:服务注册与发现中心
    • itoken-zipkin:服务链路追踪系统

    Runner

    • 使用 docker 部署
    /usr/local/docker/runner/docker-compose.yml
    
    • 编写服务 CI 配置文件 .gitlab-ci.yml (放在项目根目录下)
    stages:
      - build
      - push
      - deploy
      - clean
    
    # 打包项目、构建镜像
    build:
      stage: build
      script:
        - /usr/local/maven/apache-maven-3.8.1/bin/mvn clean package
        - mv target/itoken-config-1.0.0-SNAPSHOT.jar docker/ && cd docker/
        - docker build -t harbor.seth.com/itoken/itoken-config .
    
    # 推送镜像
    push:
      stage: push
      script:
        - docker login harbor.seth.com -u admin -p Harbor12345
        - docker push harbor.seth.com/itoken/itoken-config:latest
    
    # 部署服务
    deploy:
      stage: deploy
      script:
        - cd docker
        - docker-compose down
        - docker-compose up -d
    

    查看项目构建过程

    进入容器

    docker exec -it <容器id> /bin/bash
    

    持续集成,持续部署

    cd /home/gitlab-runner/builds/a9932170/0/itoken/itoken-config/
    

    问题 & 解决

    • 权限
    image-20210826061016901

    解决:宿主机修改 docker.sock 权限

    sudo chmod 666 /var/run/docker.sock
    

    参考

    • 孤儿容器

    image-20210826073830014

    解决:

    image-20210829000801557

    docker/<项目名>/docker-compose
    
    Note
    Your app’s network is given a name based on the “project name”, which is based on the name of the directory it lives in. You can override the project name with either the --project-name flag or the COMPOSE_PROJECT_NAME environment variable.
    

    参考

  • 相关阅读:
    LRU缓存机制的实现
    用docker配置mysql主从复制
    策略模式,以及最近用到的策略模式
    2021"MINIEYE杯"中超(7~10)补题
    2021"MINIEYE杯"中超(6)补题
    2021"MINIEYE杯"中超(5)补题
    2021"MINIEYE杯"中超(4)补题
    2021"MINIEYE杯"中超(3)补题
    2021暑期个人赛4补题 (待补充)
    2021暑期个人赛2补题 (待补充)
  • 原文地址:https://www.cnblogs.com/sethxiong/p/15337953.html
Copyright © 2020-2023  润新知