主页

索引

模块索引

搜索页面

常用

警告

docker compose is the most recent version and should be used instead of docker-compose. For more details and information check out: https://stackoverflow.com/questions/66514436/difference-between-docker-compose-and-docker-compose

Docker Compose 是Docker三剑客之一,是 Docker 官方编排(Orchestration)项目之一,负责快速的部署分布式应用。 Compose 定位是 「定义和运行多个 Docker 容器的应用(Defining and running multi-container Docker applications)」,其前身是开源项目 Fig。 docker-compose 是一个用来把 docker 自动化的东西。有了 docker-compose 你可以把所有繁复的 docker 操作全都一条命令,自动化的完成。

Compose 允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。 Compose 中有两个重要的概念:

1. 服务 (service): 一个应用的容器,实际上可以包括若干运行相同镜像的容器实例
2. 项目 (project): 由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义

Compose 项目由 Python 编写,实现上调用了 Docker 服务提供的 API 来对容器进行管理。因此,只要所操作的平台支持 Docker API,就可以在其上利用 Compose 来进行编排管理。

实例

web 应用:

from flask import Flask
from redis import Redis

app = Flask(__name__)
redis = Redis(host='redis', port=6379)

@app.route('/')
def hello():
    count = redis.incr('hits')
    return 'Hello World! 该页面已被访问 {} 次。\n'.format(count)

if __name__ == "__main__":
    app.run(host="0.0.0.0", debug=True)

Dockerfile:

FROM python:3.6-alpine
ADD . /code
WORKDIR /code
RUN pip install redis flask
CMD ["python", "app.py"]

docker-compose.yml:

version: '3'
services:

  web:
    build: .
    ports:
     - "5000:5000"
    depends_on:                     // 指定依赖
      - mongodb

  redis:
    image: "redis:alpine"
    container_name: redis-name      // 指定 container 名
    working_dir: /opt/workedge      // 指定工作目录
    command: ls -lh                 // 指定执行命令
    volumes:                        // 指定挂载目录
        - .:/data/
    ports:                          // 指定端口绑定
        - "27017:27017"
    restart: always                 // 容器挂掉时,是否重启

实例-指定网络(mongo_net):

version: '3'
services:

  mongo:
    image: mongo:4.0.27
    networks:
      mongo_net:

networks:
  mongo_net:
    driver: bridge
    ipam:
      config:
      - subnet: 172.16.0.0/24
        gateway: 172.16.0.254

实例-指定 volumes:

version: "3.9"
services:

  db:
    image: postgres:9.4
    volumes:
      - db-data:/var/lib/postgresql/data

volumes:
  db-data:

运行 compose 项目:

$ docker-compose -f file.yml up
or
$ docker stack deploy -f file.yml <name>

主页

索引

模块索引

搜索页面