docker
  • docker教程
  • advanced
    • Docker 构建缓存指南
    • Docker分配CPU资源
    • Dockerfile+Maven插件构建SpringBoot镜像(推荐)
    • Dockerfile构建SpringBoot镜像
    • idea配置docker
    • Docker Jenkins进阶配置
    • 基于jenkins容器部署SpringBoot应用构建镜像(基于Dockerfile+Maven插件构建)
    • Maven插件构建SpringBoot镜像(二)
    • 基于Maven插件为SpringBoot应用构建镜像并推送到远程_私人仓库(Docker Hub)
    • Maven插件构建SpringBoot镜像(一)
    • Docker MongoDB进阶配置
    • Docker 多阶段构建指南
    • Docker MySql进阶配置
    • Docker network进阶配置
    • Docker Nginx进阶配置
    • Docker空(none)镜像处理
    • Docker pip install --no-cache-dir
    • Docker redis进阶配置
  • concepts
    • docker、docker engine和docker desktop区别
    • 架构
    • 什么是容器?
    • 什么是镜像?
    • 什么是Docker?
    • 什么是仓库?
  • docker-compose
    • Docker Compose 锚点的用法
    • docker-compose 编排多服务
    • docker-compose 常用命令
    • docker-compose 部署jenkins
    • docker-compose安装mySql
    • docker-compose网络配置
    • docker-compose安装nginx
    • docker-compose安装redis
    • docker Compose 示例1
  • docker-hub
    • Docker Hub账号服务说明
  • install
    • CentOS Docker 安装
    • Debian Docker 安装
    • Docker 安装 Apache
    • Docker 安装 CentOS
    • Docker 安装 Elasticsearch
    • Docker 安装 GitLab
    • Docker 安装 Jenkins
    • Docker 安装 MongoDB
    • Docker 安装 MySQL
    • Docker 安装 Nginx
    • Docker 安装 Node.js
    • Docker 安装 PHP
    • Docker 安装 Portainer
    • Docker Python 官方镜像使用说明(TAG说明)
    • Docker 安装 Python
    • Docker 安装 Redis
    • Docker 安装 Tomcat
    • Docker 安装 Ubuntu
    • Docker 安装 Wordpress
    • Docker 国内镜像加速
    • MacOS Docker 安装
    • Ubuntu Docker 安装
    • Windows Docker 安装
  • manual
    • Docker attach 命令
    • Docker build 命令
    • Docker 清理命令
    • Docker命令大全
    • Docker commit 命令
    • docker-compose-run-command
    • Docker cp 命令
    • Docker create 命令
    • Docker diff 命令
    • Docker rm 命令
    • Docker exec 命令
    • Docker export 命令
    • Docker history 命令
    • Docker images 命令
    • Docker import 命令
    • Docker info 命令
    • Docker inspect 命令
    • Docker kill 命令
    • Docker load 命令
    • Docker login/logout 命令
    • Docker logs 命令
    • Docker network 命令
    • Docker pause/unpause 命令
    • Docker port 命令
    • Docker 常见问题
    • Docker ps 命令
    • Docker pull 命令
    • Docker push 命令
    • Docker rename 命令
    • docker-resources
    • Docker rm 命令
    • Docker rm 命令
    • Docker run 命令
    • Docker save 命令
    • Docker search 命令
    • Docker start/stop/restart 命令
    • Docker stats 命令
    • Docker tag 命令
    • Docker top 命令
    • Docker version 命令
    • Docker version 命令
    • Docker wait 命令
    • diff
      • Docker Compose 和 docker-compose 区别
      • Docker import、export 与 save、load 命令 区别
  • usage
    • Docker docker-compose 使用
    • Docker 容器连接
    • Docker 容器使用
    • Docker Dockerfile Ptyhon实战配置-1
    • Docker Dockerfile Ptyhon实战配置之多阶段构建-2
    • Docker Dockerfile
    • Docker 镜像使用
    • Docker Machine
    • Docker 仓库管理
    • Swarm集群管理
  • assets
    • mysql
      • my.cnf
Powered by GitBook
On this page
  • 说明
  • 准备工作
  • 编写docker-compose.yml文件
  • 部署

Was this helpful?

  1. docker-compose

docker-compose 编排多服务

PreviousDocker Compose 锚点的用法Nextdocker-compose 常用命令

Last updated 4 months ago

Was this helpful?

说明

本教程基于docker-compose同时编排(部署)多个服务包含: jenkins、redis、mySql5、nginx。

一些相关命令备注:

  • depend_on: 依赖服务启动的顺序

  • 其他命令:

准备工作

搭建基础和依赖环境

  • 搭建jdk环境请自行准备(本教程演示的挂载目录: /usr/local/java/jdk1.8.0_341)

  • 搭建maven环境请自行准备(本教程演示的挂载目录: /usr/local/apache-maven-3.8.6)

  • 搭建git环境请自行准备

创建容器映射宿主主机挂载目录

  • jenkins挂载目录

#jenkins的数据目录
$ mkdir -p /mount/jenkins/
#maven本地仓库地址
$ mkdir -p /mount/maven/repository
  • mySql挂载目录

$ mkdir -p /mount/mysql/data \
  -p /mount/mysql/conf.d \
  -p /mount/mysql/log

说明: 最新官方MySQL(5.7.19)的docker镜像在创建时映射的配置文件目录有所不同 MySQL(5.7.19)的默认配置文件是 /etc/mysql/my.cnf 文件。如果想要自定义配置, 建议向 /etc/mysql/conf.d 目录中创建 *.cnf 文件。新建的文件可以任意起名,只要保证后缀名是 cnf 即可。 新建的文件中的配置项可以覆盖 /etc/mysql/my.cnf 中的配置项。 又由于宿主主机 /mount/mysql/conf.d 目录 已经挂载到docker容器 /etc/mysql/conf.d 目录,所以只需在 /mount/mysql/conf.d 目录下自定义*.cnf文件即可生效。

  • nginx挂载目录

$ mkdir -p /mount/nginx/conf \
  -p /mount/nginx/logs \
  -p /mount/nginx/html \
  -p /mount/nginx/conf.d

nginx.conf文件上传到 /mount/nginx/ 目录下面

default.conf 文件上传到 /mount/nginx/conf.d/default.conf 目录下面

index.html、50x.html 文件上传到 /mount/nginx/html 目录下面

通用的配置文件模板

说明: 映射的配置文件一定要存在,否则启动服务会报错

  • redis挂载目录

$ mkdir -p /mount/redis/data

编写docker-compose.yml文件

version: '3'
services:
  jenkins:
    image: jenkins/jenkins:lts
    container_name: jenkins
    user: root
    privileged: true
    restart: always
    environment:
        JAVA_OPTS: '-Djava.util.logging.config.file=/var/jenkins_home/log.properties'
    volumes:
      - /mount/jenkins/:/var/jenkins_home 
      - /usr/local/apache-maven-3.8.6:/usr/local/apache-maven-3.8.6
      - /mount/maven/repository:/mount/maven/repository
      - /usr/local/java/jdk1.8.0_341:/usr/local/java/jdk1.8.0_341
      - /var/run/docker.sock:/var/run/docker.sock
      - /usr/bin/docker:/usr/bin/docker
      - /usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7
    ports:
      - 8088:8080
    expose:
      - 8080
      - 50000
  nginx:
    image: nginx:latest
    container_name: nginx
    restart: always 
    volumes: 
      - /mount/nginx/conf/nginx.conf:/etc/nginx/nginx.conf   
      - /mount/nginx/html:/usr/share/nginx/html             
      - /mount/nginx/logs:/var/log/nginx                    
      - /mount/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf  
    ports:  
      - 80:80   
  redis: 
    image: redis:latest  
    container_name: redis  
    command: redis-server --appendonly yes --requirepass '123456'  
    restart: always  
    volumes:  
      - /mount/redis/data:/data  
    ports:   
      - 6379:6379
  mysql:     
    image: mysql:5.7                                
    container_name: mysql                           
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci 
    restart: always                                 
    environment:  
      MYSQL_ROOT_PASSWORD: root          
    ports:    
      - 3306:3306
    volumes:   
      - /mount/mysql/data:/var/lib/mysql
      - /mount/mysql/conf.d:/etc/mysql/conf.d
      - /mount/mysql/log:/var/log/mysql

部署

将 docker-compose.yml 文件上传到Linux服务器 /mount 目录下

启动脚本服务

$ cd /mount
$ docker-compose up -d  #后台运行
[+] Running 4/4
 ⠿ Container nginx    Started                                                                               2.6s
 ⠿ Container redis    Started                                                                               2.6s
 ⠿ Container mysql    Started                                                                               2.7s
 ⠿ Container jenkins  Started                                                                               2.6s

验证过程略

https://docs.docker.com/compose/compose-file/#depends_on
https://docs.docker.com/compose/compose-file/
安装docker
安装docker-compose
nginx.conf
default.conf
index.html
50x.html