Docker-Compose 安装

先安装 Docker

  • 参考:在 Ubuntu 中安装 Docker 和 docker 的使用

  • 官方安装教程:Install Docker Engine on Ubuntu | Docker Documentation

  • 安装 Docker

    1
    sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common && curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - && sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" && sudo apt-get update && sudo apt-get install -y docker-ce
  • 查看 Docker 版本

    1
    docker -v

  • 配置镜像加速器 (也可以从 阿里云 获取 daemon.json

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    # 创建文件夹
    sudo mkdir -p /etc/docker

    # 读取输入的数据,并输出成 daemon.json 文件
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
    "registry-mirrors": ["https://epsax6ut.mirror.aliyuncs.com"],
    "log-driver":"json-file",
    "log-opts": {"max-size":"10m", "max-file":"3"}
    }
    EOF

    # 重新加载配置文件
    sudo systemctl daemon-reload

    # 重启 docker
    sudo systemctl restart docker

再安装 Docker-Compose

  • 官方安装教程:Install on Linux | Docker Documentation

  • 下载 Docker-Compose(参考官网使用最新的版本号,否则有可能下载不动

    1
    2
    3
    # sudo curl -SL https://github.com/docker/compose/releases/download/版本号/docker-compose-内核名称-硬件名称 -o 宿主机地址/docker-compose

    sudo curl -SL "https://github.com/docker/compose/releases/download/v2.11.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  • 设置执行权限

    1
    sudo chmod +x /usr/local/bin/docker-compose
  • 查看版本

    1
    docker-compose --version

Docker-Compose 部署 Nginx

获取映射文件(有映射文件的可以跳过这一步

  • 可以像下面一样使用笨方法获取,也可以从网上找下载(蓝奏云下载

  • /opt/docker/nginx/ 下创建文件和文件夹

    1
    2
    3
    4
    5
    # 创建 nginx.conf 文件
    touch nginx.conf

    # 创建 conf.d, html, nginx 文件夹
    mkdir conf.d html nginx

  • 拉取镜像

    1
    docker pull nginx
  • 启动服务(这个服务能运行就行,主要是为了拷贝文件

    1
    docker run --name nginx -p 80:80 -d nginx
  • 从容器中复制所需文件到宿主机中

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    # docker cp 容器名:文件 宿主机文件

    # 拷贝 nginx.conf 文件
    docker cp nginx:/etc/nginx/nginx.conf /opt/docker/nginx/

    # 拷贝 conf.d 文件夹
    docker cp nginx:/etc/nginx/conf.d /opt/docker/nginx

    # 拷贝 html 文件夹
    docker cp nginx:/usr/share/nginx/html /opt/docker/nginx

    # 拷贝 日志 文件夹
    docker cp nginx:/var/log/nginx /opt/docker/nginx

    # ssl证书位置(暂时不需要)
    /opt/docker/nginx/ssl/
  • 文件目录

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    |-- /opt/docker/nginx
    |-- conf.d
    |-- default.conf # nginx 配置
    |-- html # 前端打包后的文件放到这个文件夹
    |-- 50x.html
    |-- index.html
    |-- nginx
    |-- access.log
    |-- error.log
    |-- nginx.conf
  • 停止并删除项目

    1
    docker stop nginx && docker rm nginx

使用 Docker-Compose

  • /opt/docker/nginx/ 下创建 nginx.yml,并复制下面代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    version: '3.8'    # 对应 Docker 版本: https://docs.docker.com/compose/compose-file/compose-versioning/

    services:
    nginx:
    restart: always # 重启策略
    image: "nginx:latest" # 镜像名 (${image}:${tag})
    container_name: "nginx" # 容器名 (自定义)
    ports: # 端口号
    - "80:80" # Http (宿主机:容器)
    - "443:443" # Https (宿主机:容器)
    volumes: # 数据卷
    - /opt/docker/nginx/nginx.conf:/etc/nginx/nginx.conf # 配置文件 (宿主机:容器)
    - /opt/docker/nginx/conf.d:/etc/nginx/conf.d # 配置文件夹 (宿主机:容器)
    - /opt/docker/nginx/html:/usr/share/nginx/html # 前端打包文件 (宿主机:容器)
    - /opt/docker/nginx/nginx:/var/log/nginx # 日志文件夹 (宿主机:容器)
  • 运行项目

    1
    docker-compose -f ./nginx.yml up -d

访问项目

  • 查看项目是否正常运行

    1
    docker ps -a

  • 开启防火墙

    • 阿里云

    • 华为云

  • 访问链接 宿主机IP:80

Docker-Compose 部署 Redis

获取 Redis.conf(有配置文件的可以跳过这一步

  • 蓝奏云下载

  • 查看 redis 容器版本

    1
    2
    3
    # docker image inspect 容器名:latest|grep -i version

    docker image inspect redis:latest|grep -i version

  • 根据官网链接,找到自己对应的版本仓库

    1
    https://github.com/redis/redis 			# 官网链接

  • 找到 redis.conf 配置文件并下载

配置 Redis.conf

  • 全局搜索 bind,加上注释,以便外网访问

  • 全局搜索 requirepass,取消前面的注释,并设置密码

  • 全局搜索 appendonly,将 no 改为 yes,以便持久化保存数据

  • 更多配置

    参考:使用 docker-compose 配置 redis 服务

  • 上传到服务器的 /opt/docker/redis/ 目录下

使用 Docker-Compose

  • /opt/docker/redis/ 下创建 redis.yml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    version: '3.8'    # 对应 Docker 版本: https://docs.docker.com/compose/compose-file/compose-versioning/

    services:
    redis:
    restart: always # 重启策略
    image: "redis:latest" # 镜像名 (${image}:${tag})
    container_name: "redis" # 容器名 (自定义)
    ports:
    - "6379:6379" # 端口号 (宿主机:容器)
    volumes:
    - /opt/docker/redis/redis.conf:/etc/redis/redis.conf # 配置文件 (宿主机:容器)
    - /opt/docker/redis/data:/data # 数据文件夹 (宿主机:容器)
    command: [ "redis-server","/etc/redis/redis.conf" ] # 启动 redis 服务
  • 运行项目

    1
    docker-compose -f ./redis.yml up -d

访问项目(开启防火墙

  • 查看项目是否正常运行

    1
    docker ps -a

  • 文件目录

    1
    2
    3
    4
    5
    |-- /opt/docker/nginx
    |-- redis.conf # redis 配置
    |-- data # 数据地址
    |-- appendonly.aof # 持久化AOP文件
    |-- dump.rdb # 数据文件(停止服务后生成)

Docker-Compose 部署 Mysql

获取映射文件(有映射文件的可以跳过这一步

  • 蓝奏云下载

  • /opt/docker/mysql/ 下创建文件夹

    1
    2
    # 创建 conf.d, mysql, logs 文件夹
    mkdir conf.d mysql logs

  • 拉取镜像

    1
    docker pull mysql
  • 启动服务(这个服务能运行就行,主要是为了拷贝文件

    1
    docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d -p 3306:3306 mysql
  • 从容器中复制所需文件到宿主机中

    1
    2
    3
    4
    5
    6
    7
    # docker cp 容器名:文件 宿主机文件

    # 拷贝 conf.d 文件
    docker cp mysql:/etc/mysql/conf.d /opt/docker/mysql

    # 拷贝 mysql 文件夹
    docker cp mysql:/var/lib/mysql/ /opt/docker/mysql
  • 文件目录

    1
    2
    3
    4
    5
    6
    7
    8
    9
    |-- /opt/docker/nginx
    |-- conf.d
    |-- docker.conf
    |-- mysql.conf # mysql 配置
    |-- mysql # 数据
    |-- #innodb_temp
    |-- sys
    |-- ...
    |-- logs
  • 停止并删除项目

    1
    docker stop mysql && docker rm mysql

使用 Docker-Compose

  • /opt/docker/mysql/ 下创建 mysql.yml,并复制下面代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    version: '3.8'    # 对应 Docker 版本: https://docs.docker.com/compose/compose-file/compose-versioning/

    services:
    mysql:
    restart: always # 重启策略
    image: "mysql:latest" # 镜像名 (${image}:${tag})
    container_name: "mysql" # 容器名 (自定义)
    ports:
    - "3306:3306" # 端口号 (宿主机:容器)
    volumes: # 数据卷 (挂载)
    - /opt/docker/mysql/conf.d:/etc/mysql/conf.d # 配置文件夹 (宿主机:容器)
    - /opt/docker/mysql/mysql:/var/lib/mysql # 数据文件夹 (宿主机:容器)
    - /opt/docker/mysql/logs:/logs # 日志文件夹 (宿主机:容器)
    environment:
    MYSQL_ROOT_PASSWORD: 123456 # root用户密码 (自定义)
    TZ: Asia/Shanghai # mysql时区
  • 运行项目

    1
    docker-compose -f ./mysql.yml up -d

访问项目(开启防火墙

  • 查看项目是否正常运行

    1
    docker ps -a

Docker-Compose 部署 nacos

使用 Docker-Compose

  • /opt/docker/nacos/ 下创建 nacos.yml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    version: '3.8'    # 对应 Docker 版本: https://docs.docker.com/compose/compose-file/compose-versioning/

    services:
    nacos:
    restart: always # 重启策略
    image: "nacos/nacos-server" # 镜像名 (${image}:${tag})
    container_name: "nacos" # 容器名 (自定义)
    ports: # 端口号
    - "8848:8848"
    environment:
    MODE: standalone # 单机启动
  • 运行项目

    1
    docker-compose -f ./nacos.yml up -d

访问项目(开启防火墙)

Docker-Compose 部署 Rabbitmq

使用 Docker-Compose

  • /opt/docker/rabbitmq/ 下创建 rabbitmq.yml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    version: '3.8'    # 对应 Docker 版本: https://docs.docker.com/compose/compose-file/compose-versioning/

    services:
    rabbitmq:
    restart: always # 重启策略
    image: "rabbitmq" # 镜像名 (${image}:${tag})
    container_name: "rabbitmq" # 容器名 (自定义)
    ports: # 端口号
    - "15672:15672"
    environment:
    TZ: Asia/Shanghai # 时区
    RABBITMQ_DEFAULT_USER: root # 登录账号
    RABBITMQ_DEFAULT_PASS: 123456 # 登录密码
    RABBITMQ_DEFAULT_VHOST: / # 表示权限,谁能访问,/全部所有
  • 运行项目

    1
    docker-compose -f ./rabbitmq.yml up -d
  • 查看项目是否正常运行

    1
    docker ps -a

启动图形化界面

  • 内部

    1
    2
    3
    # docker exec -it 容器名 bash

    docker exec -it rabbitmq bash
  • rabbitmq` 默认安装目录

    1
    cd /opt/rabbitmq/sbin
  • 化管理

    1
    ./rabbitmq-plugins enable rabbitmq_management

  • 访问 宿主机IP:15762 即可看到页面