docker-compose 简单入门

195 阅读2分钟

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

1、yaml 基础配置

version: '2.3'
services:
  web:
	image: nginx:latest
	ports:
	  - "8001:80"
	volumes:
	   - "/share/docker-compose/nginx/conf/nginx.conf:/etc/nginx/nginx.conf"
	   - "/share/docker-compose/nginx/conf/conf.d:/etc/nginx/conf.d"
	   - "/share/docker-compose/nginx/log:/var/log/nginx"
	   - "/share/docker-compose/nginx/html:/usr/share/nginx/html"
	logging:
	  driver: json-file
	  options:
		max-size: "200k" # 单个文件大小为200k
		max-file: "10"
	healthcheck:
	  test: [ "CMD", "curl", "-f", "http://localhost:80" ] # 设置检测程序
	  interval: 1m30s # 设置检测间隔
	  timeout: 10s # 设置检测超时时间
	  retries: 3 # 设置重试次数
	  start_period: 40s
	restart: always

version: 指定本 yml 依从的 compose 哪个版本制定的

services: 服务配置

web:服务名,自定义,不可与镜像名重启

image: 使用的镜像名

ports: 容器对外映射的端口

volumes: 宿主挂载到容器内的路径

logging:日志配置

healthcheck: 健康检测

restart: 重启策略,always容器总是重新启动

2、常用命令

后台启动
docker-compose up -d

停止应用
docker-compose down

重启应用

docker-compose restart

查看服务状态
docker-compose ps

查看日志
docker-compose logs

进入容器
docker-compose exec <service_name> bash

3、yaml参考

nginx

  web:
	image: nginx:latest
	ports:
	  - "8001:80"
	volumes:
	   - "/share/docker-compose/nginx/conf/nginx.conf:/etc/nginx/nginx.conf"
	   - "/share/docker-compose/nginx/conf/conf.d:/etc/nginx/conf.d"
	   - "/share/docker-compose/nginx/log:/var/log/nginx"
	   - "/share/docker-compose/nginx/html:/usr/share/nginx/html"
	logging:
	  driver: json-file
	  options:
		max-size: "200k" # 单个文件大小为200k
		max-file: "10"
	healthcheck:
	  test: [ "CMD", "curl", "-f", "http://localhost:80" ] # 设置检测程序
	  interval: 1m30s # 设置检测间隔
	  timeout: 10s # 设置检测超时时间
	  retries: 3 # 设置重试次数
	  start_period: 40s
	restart: always

mysql

  db:
	image: mysql:8.0.20
	ports:
	  - "3307:3306"
	volumes:
	  - "/share/docker-compose/mysql/conf:/etc/mysql"
	  - "/share/docker-compose/mysql/logs:/logs"
	  - "/share/docker-compose/mysql/data:/var/lib/mysql"
	  - "/etc/localtime:/etc/localtime"
	environment:
	  - MYSQL_ROOT_PASSWORD=123456
	logging:
	  driver: json-file
	  options:
		max-size: "200k" # 单个文件大小为200k
		max-file: "10"
	healthcheck:
	  test: [ "CMD", "curl", "-f", "http://localhost:3306" ] # 设置检测程序
	  interval: 1m30s # 设置检测间隔
	  timeout: 10s # 设置检测超时时间
	  retries: 3 # 设置重试次数
	  start_period: 40s
	restart: always

reids

  redis:
	image: redis:latest
	ports:
	  - "6379:6379"
	volumes:
		- /share/docker-compose/redis/data:/data
		- /share/docker-compose/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf
		- /share/docker-compose/redis/logs:/logs
	command: redis-server /usr/local/etc/redis/redis.conf
	logging:
	  driver: json-file
	  options:
		max-size: "200k" # 单个文件大小为200k
		max-file: "10"
	healthcheck:
	  test: [ "CMD", "curl", "-f", "http://localhost:6379" ] # 设置检测程序
	  interval: 1m30s # 设置检测间隔
	  timeout: 10s # 设置检测超时时间
	  retries: 3 # 设置重试次数
	  start_period: 40s
	restart: always