docker-compose 的语法主要围绕 docker-compose.yml 文件,以下是各个部分的详解:
1. 版本(Version)
version: '3.8'
-
指定
docker-compose文件的版本。不同版本支持不同的特性,建议使用最新的稳定版本。
2. 服务(Services)
services:
web:
image: my-web-app:latest
build: ./web
-
services: 定义应用的各个服务。
-
web: 服务名称,可以自定义。
-
image: 使用的 Docker 镜像。
-
build: 指定 Dockerfile 的路径进行构建。
3. 端口映射(Ports)
ports:
- "5000:5000"
-
将容器内的端口映射到主机端口,格式为
主机端口:容器端口。
4. 环境变量(Environment)
environment:
POSTGRES_DB: mydb
POSTGRES_USER: user
-
设置容器内的环境变量,支持数组和键值对的形式。
5. 依赖关系(Depends_on)
depends_on:
- db
-
指定当前服务依赖于其他服务,确保启动顺序,但不等待服务就绪。
6. 卷(Volumes)
volumes:
- db_data:/var/lib/postgresql/data
-
用于数据持久化,格式为
宿主机路径:容器路径或卷名:容器路径。
7. 网络(Networks)
networks:
my_network:
-
定义服务间的网络。可以指定网络类型(如桥接、主机等)。
8. 构建参数(Build)
build:
context: .
dockerfile: Dockerfile
-
context: 构建上下文,通常是当前目录。
-
dockerfile: 指定 Dockerfile 名称,默认是
Dockerfile。
9. 重启策略(Restart)
restart: always
-
定义重启策略,如
no,always,unless-stopped,on-failure。
10. 其他设置
-
command: 覆盖容器启动时的默认命令。
-
healthcheck: 定义服务的健康检查。
-
extra_hosts: 为容器添加额外的主机名映射。
示例
以下是一个完整的示例:
version: '3.8'
services:
web:
image: my-web-app:latest
build:
context: ./web
dockerfile: Dockerfile
ports:
- "5000:5000"
environment:
DATABASE_URL: postgres://user:password@db/mydb
depends_on:
- db
networks:
- my_network
db:
image: postgres:13
environment:
POSTGRES_DB: mydb
POSTGRES_USER: user
POSTGRES_PASSWORD: password
volumes:
- db_data:/var/lib/postgresql/data
networks:
- my_network
volumes:
db_data:
networks:
my_network:
1万+

被折叠的 条评论
为什么被折叠?



