一、服务配置
image
指定服务使用的镜像。指定为镜像名称或镜像id,如果镜像在本地不存在,compose会尝试去拉去这个镜像。示例:
image: nginx:alpinebuild
通过 Dockerfile 构建镜像。指定dockerfile所在文件夹的路径(可以是绝对路径或者相对于docker-compose.yml文件的路径),会利用它自动构建应用镜像,然后使用这个镜像。build指令还可以指定创建镜像的上下文、dockerfile路径、标签、Shm大小、参数和缓存来源等。示例:
build: ./dir
或
build: context: ./dir dockerfile: Dockerfile.devcommand
覆盖容器默认启动命令,示例:
command: ["python", "app.py"]container_name
指定容器名称,默认会使用"项目名称_服务名称_序号"的格式,目前不支持swarm中使用。指定容器名称后,该服务将无法进行扩展,因为docker不允许多个容器实例重名。
container_name: my-web-appdepends_on
定义服务依赖关系,启动时,会先启动被依赖服务。示例:
depends_on: - db - redis二、网络配置
ports
映射端口,暴露端口信息,示例:
#宿主机端口:容器端口
HOST:CONTAINER
#容器端口(此时宿主机端口随机)
CONTAINER
例:
ports: - "80:80" - "443:443"expose
暴露容器端口,不映射到宿主机,只被连接的服务访问。仅可以指定内部端口为参数。示例:
expose: - "3000" - "8000"networks
指定容器连接的网络,所加入的网络,需要在顶级的networks字段中定义具体的网络信息。示例:
networks: - frontend - backend三、存储配置
volumes
挂载数据卷,数据卷所挂载路径设置,可以设置宿主机路径或加上访问模式。示例:
volumes: - ./data:/app/data - db_data:/var/lib/postgresql/dataenv_file
从文件设置环境变量。从文件中获取环境变量,可以为单独的文件路径或列表。示例:
env_file: .env 或 env_file: - .common.env - .app.envenvironment
直接设置环境变量,可使用数组或字典格式。示例:
environment: POSTGRES_DB: myapp POSTGRES_USER: admin四、运行配置
restart
设置重启策略,可以为no,always,on-failure(失败时),unless-stopped(除非停止) ,生产环境推荐配置为always或unless-stopped。swarm模式下要使用restart_policy。示例:
restart: always
或 restart: unless-stoppeddeploy
设置部署配置 (Swarm 模式)。指定部署和运行时的容器相关配置,只在swarm模式下生效,且只支持docker stack deply命令部署。示例:
deploy: replicas: 3 resources: limits: cpus: '0.50' memory: 512Mhealthcheck
定义容器健康检查,指定检测应用健康状态的机制,包括检测方法,间隔,超时,重试次数,启动等待时间等。示例:
healthcheck: test: ["CMD", "curl", "-f", "http://localhost"] interval: 30s timeout: 10s retries: 3logging
配置日志记录,日志相关配置,包括一系列子配置。示例:
logging: driver: "json-file" options: max-size: "10m" max-file: "3"