-
Notifications
You must be signed in to change notification settings - Fork 37
/
docker-compose.yml
78 lines (73 loc) · 4.54 KB
/
docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
version: '3.8' # 对应 Docker 版本: https://docs.docker.com/compose/compose-file/compose-versioning/
services:
backend:
build: # 构建
context: ./backend # 需要构建的文件路径 (可以是Dockerfile的文件路径,也可以是到链接到git仓库的url)
dockerfile: ./Dockerfile # 不能和image同时使用
container_name: "fastapi"
ports: # 端口号
- "8000:8000" # 端口号 (宿主机:容器)
depends_on: # 依赖项 (需等待 redis、mysql 先启动, backend 再启动)
- redis
- mysql
networks:
- app
# links: # 容器之间链接 (@host -> @容器别名) 即将被官方遗弃
# - "redis:redis" # 容器名:别名 (redis://user:[email protected]:6379/db -> redis://user:password@redis:6379/db)
# - "mysql:mysql" # 容器名:别名 (mysql://root:[email protected]:3306/db -> mysql://root:password@mysql:3306/db)
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 # 日志文件夹 (宿主机:容器)
# - /opt/docker/nginx/ssl/ # SSL证书地址 (自定义位置)
depends_on: # 依赖项
- backend
networks: # 网络桥段
- app # 指定在app网络桥段下网络互通
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 # 数据文件夹 (宿主机:容器)
- /opt/docker/redis/opt:/opt # redis module (宿主机:容器)
command: [ "redis-server", "/etc/redis/redis.conf" ] # 启动 redis 服务
networks: # 网络桥段
- app # 指定在app网络桥段下网络
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/data/:/var/lib/mysql # 数据文件夹 (宿主机:容器)
- /opt/docker/mysql/logs:/logs # 日志文件夹 (宿主机:容器)
environment:
- MYSQL_ROOT_PASSWORD=123456 # root用户密码 (自定义)
- TZ=Asia/Shanghai # mysql时区
command:
# MySQL8的密码验证方式默认是 caching_sha2_password,但是很多的连接工具还不支持该方式
# 就需要手动设置下mysql的密码认证方式为以前的 mysql_native_password 方式
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1 # 设置表名大小写不敏感
networks: # 网络桥段
- app # 指定在app网络桥段下网络
networks:
app: # 使用默认配置
name: app # 否则会多创建一个 docker_app 桥段 (可选)