Docker利用docker-compose 实现项目的一键部署(支持多项目bu‘shu部署)

2023-10-27

Docker利用docker-compose 实现项目的一键部署(支持多项目bu’shu部署)

安装 docker

  1. 在安装 Docker以及 docker-compose
  2. 可以进行在线安装和离线安装两种方式
    • 在线安装方式
      curl -sSL https://get.daocloud.io/docker | sh
    • 离线安装方式
      1. 下载 docker 压缩包:https://download.docker.com/linux/static/stable/x86_64/docker-20.10.23.tgz
      2. 上传tgz到服务器[/data/software],解压缩并迁移命令,上传的路径可以根据自己的实际情况来做,我是上传到/data/software 这个目录下,下面是执行命令
      cp /data/software
      tar -zxvf docker-20.10.23.tgz
      cp -pf docker/* /usr/bin
      
      1. 将 docker 注册为系统服务
        # vim /usr/lib/systemd/system/docker.service  
        [Unit]
        Description=Docker Application Container Engine
        Documentation=http://docs.docker.com
        After=network.target docker.socket
        [Service]
        Type=notify
        EnvironmentFile=-/run/flannel/docker
        WorkingDirectory=/usr/local/bin
        ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock --selinux-enabled=false
        ExecReload=/bin/kill -s HUP $MAINPID
        # Having non-zero Limit*s causes performance problems due to accounting overhead
        # in the kernel. We recommend using cgroups to do container-local accounting.
        LimitNOFILE=infinity
        LimitNPROC=infinity
        LimitCORE=infinity
        # Uncomment TasksMax if your systemd version supports it.
        # Only systemd 226 and above support this version.
        #TasksMax=infinity
        TimeoutStartSec=0
        # set delegate yes so that systemd does not reset the cgroups of docker containers
        Delegate=yes
        # kill only the docker process, not all processes in the cgroup
        KillMode=process
        Restart=on-failure
        [Install]
        WantedBy=multi-user.target
        
      2. 启动 docker
        # systemctl daemon-reload
        # systemctl start docker
        # systemctl enable docker  // 开机启动
        # docker info
        
      3. 设置docker国内镜像加速、私服地址、镜像存储位置
        # mkdir -p /data/docker/lib && mkdir /etc/docker
        # vim /etc/docker/daemon.json
        {
               "registry-mirrors": [
                     "https://hub-mirror.c.163.com/", 
                      "https://mirror.ccs.tencentyun.com", 
                      "https://mirror.baidubce.com"
            ],
            "insecure-registries": [
                     "你自己的 docker仓库地址"
           ],
         "data-root": "/data/docker/lib" #docker 镜像存放的位置,可以不用指定使用默认的也可以
        }
        
  3. 安装docker-compose[版本号:2.15.0]
    • 离线安装
      # cd /data/software
      //根据自己下载的文件名 重命名为 docker-compose
      # mv docker-compose-linux-aarch64 docker-compose 或者 mv docker-compose-linux-x86_64 docker-compose
      # cp docker-compose /usr/local/bin 
      # chmod a+x /usr/local/bin/docker-compose
      # ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
      # docker-compose --version #查看 docker-compose 的版本号
      
    • 在线安装
      # curl -L https://get.daocloud.io/docker/compose/releases/download/v2.15.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
      chmod a+x /usr/local/bin/docker-compose
      # chmod a+x /usr/local/bin/docker-compose
      # ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
      # docker-compose --version
      

部署项目

  1. 准备工作
    • 准备文件目录
      # mkdir -p /data/docker/webapp
      docker-webapp目录中存放 docker-compose.yml,nginx,mysql 等文件
      特别注意:文件夹里面有一个.env隐藏文件,一定要保证创建。
      # mkdir -p /data/webapp/www
      该目录存放前端静态文件.
      
    • 确认要部署的项目版本
      (1)修改1中的.env文件,来设置后端模块版本
      demo1_version=1.0.0
      demo2_version=1.0.0
      
    • 部署环境配置
      文件都在docker-webapp目录下
      1. docker-compose 文件配置
     version: '3'
     services:
     #nginx
   nginx:
      image: nginx:1.23
      container_name: nginx
      restart: always
      privileged: true
      ports: 
         - "80:80"
         - "443:443"
      volumes:
         - /data/module/nginx/logs:/var/log/nginx
         - ./nginx/html:/usr/share/nginx/html
         - ./nginx/proxy_params:/etc/nginx/proxy_params
         - ./nginx/nginx.conf:/etc/nginx/nginx.conf
         - ./nginx/conf.d:/etc/nginx/conf.d
         - ./nginx/cert:/etc/nginx/cert
         - /data/webapp:/dockerDir
      networks:
         - net_webapp # 项目之前通信的网桥
      
   #mysql
   mysql:
      image: mysql:8
      container_name: mysql
      restart: always
      #ports: 
      #   - "3306:3306" #暴露给宿主机使用的端口,服务连接mysql使用mysql:3306
      volumes:
         - /data/module/mysql/logs:/var/log/mysql
         - /data/module/mysql/data:/var/lib/mysql
         - ./mysql/my.cnf:/etc/mysql/my.cnf  #自定义my.cnf,主要修改字符集编码为utf8mb4
         - ./mysql/sqls:/docker-entrypoint-initdb.d    #初始化sql文件放这个目录下,自动执行
      environment:
         TZ: Asia/Shanghai
         MYSQL_ROOT_PASSWORD: Platomix@mysql123
      networks:
         - net_webapp
   
   #clickhouse     
   clickhouse:
      image: docker.platomix.net:10000/module/clickhouse-server:23.3.5
      container_name: ckserver
      #ports:
      #   - "8123:8123"
      ulimits:
         nofile:
            soft: 262144
            hard: 262144
      volumes:
         - /data/module/clickhouse/data:/var/lib/clickhouse
         - /data/module/clickhouse/logs:/var/log/clickhouse-server
         - ./clickhouse/config.xml:/etc/clickhouse-server/config.xml
         - ./clickhouse/users.xml:/etc/clickhouse-server/users.xml
      
   #redis
   redis:
       image: redis:5.0
       container_name: redis
       restart: always
       #ports:
       #   - "6379:6379"
       command: redis-server /usr/local/etc/redis/redis.conf  #使用配置文件方式
       volumes:
          - /data/module/redis:/data
          - /data/module/redis/logs:/logs
          - ./redis/redis.conf:/usr/local/etc/redis/redis.conf
       networks:
         - net_webapp
   
   #demo1模块      
   project-demo1:
      image: images名称:${demo1_version}
      container_name: demo1
      environment:
         JAVA_OPTS: "-Xms512m -Xmx1g"
         SPRINGBOOT_PARAMS: "--server.port=6969 --spring.profiles.active=docker --log.path=/dockerDir/logs/xxljob"
      volumes:
         - /data/webapp:/dockerDir
      #ports:
      #  - "6969:6969"
      networks:
         - net_webapp      
   
   #demo2模块      
   project-demo2:
      image: images名称:${demo2_version}
      container_name: demo2
      environment:
         JAVA_OPTS: "-Xms2g -Xmx2g -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=256M -XX:MaxDirectMemorySize=256m -XX:+UseConcMarkSweepGC -XX:+DisableExplicitGC -XX:+CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=75 -XX:HeapDumpPath=/dockerDir/logs/bi/jvm.hprof -Xloggc:/dockerDir/logs/bi/gc.log"
         SPRINGBOOT_PARAMS: "--server.port=6060 --spring.profiles.active=docker --blade.domain=http://localhost"
      volumes:
         - /data/webapp:/dockerDir
      #ports:
      #   - "6060:6060"
      networks:
         - net_webapp
  
networks:
   net_webapp:
      external: true
  1. docker 镜像下载
    • 内网环境
      说明】:需要把镜像在本机保存为tar文件,上传到客户服务器再load进去
      1. 本机导出 jar 文件
        #docker save -o nginx_mysql_redis.tar nginx:1.23 mysql:8 redis:5.0
        
      2. 上传到服务器并依次导入镜像
        #docker load < nginx_mysql_redis.tar
        
    • 联网环境
      # docker login 私服地址 -u user -p password  #登录私服
      # cd /data/docker/webapp
      # docker-compose pull  #拉取镜像
      
  2. 启动项目
    项目启动必须按照顺序:
    1、创建网桥
    #docker network create net_webapp
    #docker network ls  #查看网桥
    
    2、启动mysql/redis
    # cd /data/docker/webapp
    # docker-compose up -d mysql redis
    
    3、启动BI项目模块
    # cd /data/docker/webapp
    # docker-compose up -d project-demo1 project-demo2
    
    4、最后启动nginx
    # cd /data/docker/webapp
    # docker-compose up -d nginx
    

到此整个项目就部署完毕…

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker利用docker-compose 实现项目的一键部署(支持多项目bu‘shu部署) 的相关文章

随机推荐