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 文件如下

  1. version: "3.8"
  2. services:
  3. flask-demo:
  4. image: flask-demo:latest
  5. environment:
  6. - REDIS_HOST=redis-server
  7. networks:
  8. - demo-network
  9. ports:
  10. - 8080:5000
  11. redis-server:
  12. image: redis:latest
  13. networks:
  14. - demo-network
  15. networks:
  16. demo-network:

docker-compose 语法版本

向后兼容

https://docs.docker.com/compose/compose-file/