Docker-Compose

Docker Compose

单机版容器编排

安装

1. [root@docker ~]#  curl -L https://github.com/docker/compose/releases/download/1.25.5/dockercompose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

2. [root@docker ~]# cd /usr/local/bin/

3. [root@docker ~]#  chmod +x /usr/local/bin/docker-compose


4. 验证下载
[root@docker ~]# docker-compose  
Define and run multi-container applications with Docker.

Usage:
  docker-compose [-f <arg>...] [--profile <name>...] [options] [--] [COMMAND] [ARGS...]
  docker-compose -h|--help

命令补全(可以使用tab建)

[root@docker ~]# curl -L https://raw.githubusercontent.com/docker/compose/1.25.5/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose

卸载

[root@docker ~]# rm /usr/local/bin/docker-compose

测试安装成功

[root@docker ~]# docker-compose --version
docker-compose version 1.29.2, build 5becea4c

docker compose使⽤

docker-compose模板文件格式必须为docker-compose.yml,而且一个下只能有一个docker-compose.yml

version: '3'         # docker compose版本
services:            # 固定写法
  nginx:             # 项目名称随便定义
    build: ./nginx   # 指定Dockerfile路径

docker compose常用指令

buid

# 指定 Dockerfile 所在⽂件夹的路径
version: '3'
services:  
  nginx: 
    build: ./nginx    # 指定Dockerfile路径

command

# 覆盖容器启动后默认执⾏的命令
version: '3'
services:  
  nginx: 
    build: ./nginx   
    command: echo "hello world"

container_name

# 指定容器名称
version: '3'
services:  
  nginx: 
    build: ./nginx   
    command: echo "hello world"
    container_name:nginx  # 定义运行起来容器名称

depends_on

# 设置容器启动先后顺序
version: '3'
services:  
  nginx: 
    build: ./nginx   
    command: echo "hello world"
    container_name: nginx 
    depends_on:   # 指定nginx容器在php容器后面运行
      - PHP
    
   PHP:
     build: ./php
      container_name:php

env_file

# 从文件中获取环境变量
env_file: .env 


env_file: 
- ./common.env 
- ./apps/web.env
- /opt/secrets.env

environment

# 设置环境变量,两种方法
environment: 
  RACK_ENV: development
  SESSION_SECRET:
  
environment: 
  - RACK_ENV=development
  - SESSION_SECRET

healthcheck

# 设置健康检查

healthcheck:
  test: ["CMD", "curl", "-f", "http://localhost"]     # 访问地址
  interval: 1m30s                                     
  timeout: 10s                                        # 超时时间
  retries: 3                                          # 连接次数

image

# 指定镜像,没有会尝试拉取

networks

# 配置网桥

version: "3"
services:
 nginx:
   networks:                
     - wordpress            # 指定连接的网桥名



networks:                   # 创建网桥,默认会创建docker_default还有自己指定创建的
 wordpress:
 

ports

# 映射端口
ports:
  - "80:80"   # 最好加上引号

volumes

# 目录挂载
volumes:
  - /var/lib/mysql

docker compose常用命令

# 参数
-f, --file FILE 指定使⽤的 Compose 模板⽂件,默认为 docker-compose.yml,可以多次指定。
-p, --project-name NAME 指定项⽬名称,默认将使⽤所在⽬录名称作为项⽬名。
--x-networking 使⽤ Docker 的可拔插⽹络后端特性
--x-network-driver DRIVER 指定⽹络后端的驱动,默认为 bridge--verbose 输出更多调试信息。
-v, --version 打印版本并退出。
# 前台启动
[root@docker ~]# docker-compose up 
# 后台启动
[root@docker ~]# docker-compose up -d

# 停⽌ up 命令所启动的容器,并移除⽹络
[root@docker ~]# docker-compose down

docker compose ps

# 查看当前docker compose管理的容器列表

docker compose搭建wordpress

# 准备docker-compose.yaml 文件
[root@docker ~]# cat docker-compose.yaml 
version: '3' 
services:
  nginx:                                    # 项目名称
    build: ./nginx                          # 构建nginx镜像
    container_name: nginx                   # 容器名称为nginx
    depends_on:                             # nginx在php容器后面运行
      - php
    networks:                               # 连接wordpress网桥
      - wordpress
    ports:                                  # 映射80端口
      - "80:80"
    volumes:                                # 挂载/mnt/html文件
      - /mnt/html:/usr/share/nginx/html  
  
  php:                                      # 项目名称
    build: ./php                            # 构建PHP镜像
    container_name: php                     # 容器名称为PHP
    networks:                               # 连接wordpress网桥
      - wordpress                           # 挂载/mnt/html文件
    volumes:                               
      - /mnt/html:/usr/share/nginx/html
  
  mysql:                                    # 项目名称
    container_name: mysql                   # 容器名称为MySQL
    image: mysql:5.7                        # 下载MySQL镜像
    environment:
      - MYSQL_ROOT_PASSWORD=123             # 环境变量
      - MYSQL_DATABASE=wordpress
    networks:                               # 连接wordpress网桥
      - wordpress       
networks:                                   # 创建网桥
  wordpress:
  
  # 注:写docker-compose.yaml文件时一定要注意空格格式,不然会恶心死!!!!!
  
posted @ 2023-05-17 20:34  秋洛尘  阅读(47)  评论(0)    收藏  举报