# docker compose实现一键化部署 **Repository Path**: wyfproject/docker-compose ## Basic Information - **Project Name**: docker compose实现一键化部署 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-01-27 - **Last Updated**: 2022-01-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # docker compose实现一键化部署 本章是基于Centos8系统 ## 前提准备 ### 安装docker 1)安装依赖软件 yum install -y yum-utilsdevice-mapper-persistent-data lvm2 2)添加软件源地址 yum-config-manager--add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 3)安装docker yum install https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpm yum -y install docker-ce 4)开启docker服务 service docker start 5)设置开机启动 systemctl enable docker 6)测试docker docker ps 7)配置国内镜像 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo ### 安装docker-compose 1)确保已安装curl命令 $ curl --version 2)如果没有则先安装 yum -y install curl 3)安装docker-compose $ curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose $ chmod +x /usr/local/bin/docker-compose 4)检查是否安装成功 $ docker-compose version ## 部署 ### 文件准备 本文以mysql和java为例 在home目录下(~/)新建docker目录,进入docker目录,再分别创建mysql目录、java目录、redis目录。mysql目录是用来放初始化的脚本文件,我们可以把需要初始化的sql写好,命名为init.sql放在此目录下。java目录用来放我们要启动的java项目的jar包。 最后的目录树为 ``` ~/docker / |-- docker-compose.yml |-- mysql —|-- init.sql |-- redis —|-- data |-- java —|-- test-docker.jar ``` ###编写docker-compose.yml ``` version: '3' services: mysql: image: mysql:5.7 # 原镜像`mysql:5.7` container_name: mysql # 容器名为'mysql' restart: always # 指定容器退出后的重启策略为始终重启 volumes: # 数据卷挂载路径设置,将本机目录映射到容器目录 - "./mysql/my.cnf:/etc/mysql/my.cnf" - "./mysql/data:/var/lib/mysql" - "./mysql/conf.d:/etc/mysql/conf.d" environment: # 设置环境变量,相当于docker run命令中的-e TZ: Asia/Shanghai LANG: en_US.UTF-8 MYSQL_ROOT_PASSWORD: root # 设置root用户密码 ports: # 映射端口 - "13306:3306" postgres: image: postgres:13.1 container_name: postgres privileged: true restart: always environment: TZ: Asia/Shanghai LANG: en_US.UTF-8 POSTGRES_USER: root POSTGRES_PASSWORD: root ports: - 5432:5432 volumes: - "./postgresql/data:/var/lib/postgresql/data" labels: - "traefik.http.routers.db.rule=Host(`db.shanyue.local`)" redis: image: redis:latest # 镜像'redis:latest' container_name: redis # 容器名为'redis' restart: always # 指定容器退出后的重启策略为始终重启 # command: redis-server /etc/redis/redis.conf --requirepass 123456 --appendonly yes # 启动redis服务并添加密码为:123456,并开启redis持久化配置 command: redis-server --appendonly yes # 启动redis服务并添加密码为:123456,并开启redis持久化配置 environment: # 设置环境变量,相当于docker run命令中的-e TZ: Asia/Shanghai LANG: en_US.UTF-8 volumes: # 数据卷挂载路径设置,将本机目录映射到容器目录 - "./redis/data:/data" # - "./redis/redis.conf:/etc/redis/redis.conf" # `redis.conf`文件内容`http://download.redis.io/redis-stable/redis.conf` ports: # 映射端口 - "6379:6379" tomcat: image: tomcat:8.5.40 # 原镜像`tomcat` container_name: tomcatjb # 容器名为'tomcat' restart: always # 指定容器退出后的重启策略为始终重启 environment: TZ: Asia/Shanghai LD_LIBRARY_PATH: /home/jb/Linux_x64 volumes: # 数据卷挂载路径设置,将本机目录映射到容器目录 - "./tomcatjb/logs:/usr/local/tomcat/logs" - "./tomcatjb/webapps:/usr/local/tomcat/webapps" - "/F/code/docker:/home/jb" ports: # 映射端口 - "8880:8080" portainer: image: registry.cn-hangzhou.aliyuncs.com/zhengqing/portainer # 原镜像`portainer/portainer:latest` container_name: portainer # 容器名为'portainer' restart: always # 指定容器退出后的重启策略为始终重启 volumes: # 数据卷挂载路径设置,将本机目录映射到容器目录 - "./portainer/data:/data" - "./portainer/Portainer-CN:/public" # 汉化 environment: # 设置环境变量,相当于docker run命令中的-e TZ: Asia/Shanghai LANG: en_US.UTF-8 ports: # 映射端口 - "9000:9000" ``` ## 启动 在~/docker目录下,执行 docker-compose up -d 即可。 ## 存在问题 这只是基本服务启动起来了,如果想把java下的jar也打进去,注意redis/mysql的初始化连接,需要在jar下修改 这样一键化部署多个服务