compose 文件的结构和版本

docker compose文件的语法说明 https://docs.docker.com/compose/compose-file/

基本语法结构

  1. version: "3.8"
  2. services: # 容器
  3. servicename: # 服务名字,这个名字也是内部 bridge网络可以使用的 DNS name
  4. image: # 镜像的名字
  5. command: # 可选,如果设置,则会覆盖默认镜像里的 CMD命令
  6. environment: # 可选,相当于 docker run里的 --env
  7. volumes: # 可选,相当于docker run里的 -v
  8. networks: # 可选,相当于 docker run里的 --network
  9. ports: # 可选,相当于 docker run里的 -p
  10. servicename2:
  11. volumes: # 可选,相当于 docker volume create
  12. networks: # 可选,相当于 docker network create

以 Python Flask + Redis练习:为例子,改造成一个docker-compose文件

  1. docker image pull redis
  2. docker image build -t flask-demo .
  3. # create network
  4. docker network create -d bridge demo-network
  5. # create container
  6. docker container run -d --name redis-server --network demo-network redis
  7. docker container run -d --network demo-network --name flask-demo --env REDIS_HOST=redis-server -p 5000:5000 flask-demo

docker-compose.yml 文件如下

version: "3.8"
services:
  flask-demo:
    image: flask-demo:latest
    environment:
      - REDIS_HOST=redis-server
    networks:
      - demo-network
    ports:
      - 8080:5000
  redis-server:
    image: redis:latest
    networks:
     - demo-network
networks:
  demo-network:

docker-compose 语法版本

向后兼容
https://docs.docker.com/compose/compose-file/