Docker Compose
Docker Compose
1. Docker Compose 可以做什么?
主要是解决容器管理的问题。举个例子,一个小型的 LNMP 网站,需要 Linux 容器,Nginx 容器,MySQL容器,PHP容器 相互配合,这时 docker compose 就派上用场了。
2. Docker Compose 常用命令
命令 | 解释 |
---|---|
docker-compose ps | 查看当前文件夹下 compose 管理的容器 |
docker-compose start CONTAINER_NAME | 启动容器 |
docker-compose stop CONTAINER_NAME | 停止容器 |
docker-compose -p PROJECT_NAME up -d | 创建并启动当前文件夹下 docker-compose.yml 配置的 所有容器(-d:后台运行,-p:指定项目名称)可以使用 -f 指定 启动时读取的 配置文件 |
docker-compose down | 停止 并 删除所管理的容器 |
docker-compose logs 容器名称 | 查看容器的log日志 |
3. 编写 docker-compose.yml 配置文件
# 代表我们定义的 docker-compose.yml 文件内容所采用的版本
version: "3"
networks:
frontend:
backend:
# 定义了网络驱动的类型,并指定了子网的网段
spnet:
driver: bridge
ipam:
driver: default
config:
- subnet: 10.10.1.0/24
volumes:
mysql-data:
external-data:
# 如果我们想把属于 Docker Compose 项目以外的数据卷引入进来直接使用,我们可以将数据卷定义为外部引入,
# 在加入 external 定义后,Docker Compose 在创建项目时不会直接创建数据卷,而是优先从 Docker Engine 中已有的数据卷里寻找并直接采用。
external: true
services:
redis:
# 镜像
image: redis:3.2
# 网络
networks:
backend:
# 定义网络别名
aliases:
- backend.database
# 数据卷
volumes:
- ./redis/redis.conf:/etc/redis.conf:ro
# 端口映射
ports:
- "6379:6379"
# Redis 启动命令
command: ["redis-server", "/etc/redis.conf"]
database:
image: mysql:5.7
networks:
- backend
# 应用已经定义的数据卷
volumes:
- ./mysql/my.cnf:/etc/mysql/my.cnf:ro
- mysql-data:/var/lib/mysql
# 环境变量
environment:
- MYSQL_ROOT_PASSWORD=my-secret-pw
ports:
- "3306:3306"
webapp:
build: ./webapp
networks:
- frontend
- backend
volumes:
- ./webapp:/webapp
# 依赖
depends_on:
- redis
- database
nginx:
image: nginx:1.12
networks:
- frontend
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
- ./nginx/conf.d:/etc/nginx/conf.d:ro
- ./webapp/html:/webapp/html
depends_on:
- webapp
ports:
- "80:80"
- "443:443"
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: