在 Docker Compose 中,可以非常方便的定义单个服务,下面通过一个完整的例子进行介绍。
示例:
# 使用的是 Docker Compose 的第三版规范
version: '3'
# 服务定义
services:
# 定义一个 webapp 服务
webapp:
# 配置构建信息
build:
# 指定构建上下文路径为当前目录下的 ./mywebapp。这意味着 Docker 引擎会在这个目录
# 下寻找构建所需的文件。
context: ./mywebapp
# 指定构建时使用的 Dockerfile 文件名称为 Dockerfile
# 默认情况下会在构建上下文中寻找该文件
dockerfile: Dockerfile
# 环境变量配置
environment:
# 设置环境变量 DEBUG 为 true
DEBUG: true
# 端口映射配置
ports:
# 将容器内部的 80 端口映射到主机的 8000 端口
# 这样可以通过主机的 8000 端口访问容器内运行的服务
- "8000:80"
# 数据卷配置
volumes:
# 将主机当前目录下的 ./static 目录挂载到容器内的 /app/static 目录
# 这使得在主机上对 ./static 目录的修改可以立即反映在容器内,方便开发和更新静态文件
- ./static:/app/static
# 依赖关系配置
depends_on:
# 表明这个服务依赖于 database 服务,在启动 webapp 服务之前,
# 会确保 database 服务已经启动
- database上面例子中,定义了一个名为 webapp 的服务。它从当前目录下的 mywebapp 文件夹构建镜像,设置了环境变量 DEBUG 为 true,将容器的 80 端口映射到宿主机的 8000 端口,挂载了 ./static 目录到容器内的 /app/static 目录,并依赖于一个名为 database 的服务。