在 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 的服务。