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文件时一定要注意空格格式,不然会恶心死!!!!!

浙公网安备 33010602011771号