docker-compose.yml 文件详解
时间: 2025-02-19 19:31:39 浏览: 48
### Docker Compose 文件格式和配置项详解
#### 一、版本声明
`docker-compose.yml` 文件的第一部分通常是 `version` 字段,用于指定当前使用的 Docker Compose 文件格式版本。常见的版本有 "3" 或者 "3.x"[^4]。
```yaml
version: '3'
```
#### 二、服务定义
接下来是 `services` 节点,在这里可以定义多个服务及其属性。每个服务代表一个独立的应用组件或微服务单元。以下是几个重要的字段:
- **image**: 指定要拉取的基础镜像名称。
```yaml
image: redis:alpine
```
- **build**: 如果需要基于本地的 Dockerfile 来构建自定义镜像,则可以通过此选项指明上下文路径以及可选参数。
```yaml
build:
context: ./dir
dockerfile: Dockerfile-alternate
args:
BUILD_DATE: 1980-07-28
```
- **command**: 替代默认启动命令执行特定指令。
```yaml
command: ["bash", "-c", "echo Hello"]
```
- **environment**: 设置环境变量列表。
```yaml
environment:
- RACK_ENV=development
- SESSION_SECRET
```
- **ports**: 映射主机端口到容器内部端口。
```yaml
ports:
- "8080:80"
```
- **volumes**: 绑定挂载卷以便数据持久化存储或其他用途。
```yaml
volumes:
- type: bind
source: ./data/mysql
target: /var/lib/mysql
```
- **depends_on**: 表达其他服务间的依赖关系,虽然这不会影响实际启动顺序但是有助于逻辑上的清晰表达。
```yaml
depends_on:
- db
- redis
```
#### 三、网络设置
为了使不同服务间能互相通信,默认情况下会创建一个新的桥接网络供所有关联的服务加入;也可以显式地定义额外的网络资源并让某些服务参与其中[^2]。
```yaml
networks:
frontend:
backend:
```
#### 四、卷管理
除了临时性的内存盘外,还可以通过 `volumes` 关键字来声明命名卷,从而实现跨宿主机的数据共享与迁移支持。
```yaml
volumes:
db_data:
```
---
阅读全文
相关推荐
















