docker compose 使用yaml
时间: 2025-01-08 12:41:38 浏览: 4
### Docker Compose 使用 YAML 文件的教程
#### 创建 `docker-compose.yml` 文件
为了使用 Docker Compose 来管理和编排多个容器的应用程序,需要在一个项目根目录下创建一个名为 `docker-compose.yml` 的文件[^1]。
此文件采用 YAML 格式来描述服务、网络以及卷等内容。通过编写这个配置文件可以定义应用所需的各种组件和服务之间的关系。
#### 配置基本的服务
在最简单的形式中,可以通过指定镜像名称和端口映射来启动单个服务:
```yaml
version: '3'
services:
web:
image: nginx:latest
ports:
- "8080:80"
```
上述例子展示了如何基于官方 Nginx 镜像运行 Web 服务器,并将其内部第 80 号端口暴露给主机上的 8080 端口。
#### 定义复杂环境下的多服务架构
对于更复杂的场景,则可能涉及多个相互依赖的服务实例;此时可以在同一个 `docker-compose.yml` 中声明这些关联的服务及其参数设置:
```yaml
version: '3'
services:
db:
image: postgres:alpine
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
backend:
build: .
command: python app.py
depends_on:
- db
volumes:
- .:/code
frontend:
image: node:lts-alpine
working_dir: /app
command: npm start
volumes:
- ./frontend:/app
ports:
- "3000:3000"
```
这段代码片段说明了一个典型的三层应用程序结构——数据库层 (`db`)、业务逻辑处理层(`backend`) 和前端展示界面(`frontend`) 。注意这里还包含了构建上下文路径(volume mount),以便于开发期间同步本地源码到容器内工作区。
#### 数据持久化与共享存储空间
当涉及到状态保存或跨不同容器间的数据交换时,可利用 **volumes** 关键字实现外部挂载点绑定或是命名型数据卷对象。例如,在 Harbor 私有仓库部署方案里就存在这样的需求:
```yaml
version: '3.7'
services:
log:
...
volumes:
- /var/log/harbor/:/var/log/docker/:z
- type: bind
source: ./common/config/log/logrotate.conf
target: /etc/logrotate.d/logrotate.conf
- type: bind
source: ./common/config/log/rsyslog_docker.conf
target: /etc/rsyslog.d/rsyslog_docker.conf
```
以上部分摘自有关 Docker 数据管理的学习资料,其中具体指定了日志记录位置及相关配置文件的位置映射方式[^3]。
#### 执行命令操作
最后要提到的是实际执行相关指令的方式。通常情况下只需简单输入如下格式即可完成相应动作:
```bash
docker-compose up # 启动并连接所有已定义的服务
docker-compose down # 停止并移除由 compose 构建起来的一切资源
```
完整的语法支持更多选项定制行为模式,请参阅官方文档获取更多信息[^2]。
阅读全文