参考自: https://blog.csdn.net/pushiqiang/article/details/78682323

1 Compose介绍

Docker Compose是一个用来定义和运行复杂应用的Docker工具。
相当于一个启用多个Docker容器的脚本
一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器。
Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。

2 安装docker-compose

(1) win mac

直接装docker-desktop就能自动 安装docker和docker-compose

(2) linux

先确保自己已经安装了docker, 如果未安装, 执行:

apt install docker.io

再安装docker-compose

apt install docker-compose

检查是否安装成功

docker-compose —version

3 构建一个docker容器内的flask应用

目录结构如下:

  1. └── compose_test
  2. ├── docker
  3. └── docker-compose.yml
  4. ├── Dockerfile
  5. └── src
  6. ├── app.py
  7. └── requirements.txt

(1) 创建工程目录

  1. $ mkdir compose_test
  2. $ cd compose_test
  3. $ mkdir src # 源码文件夹
  4. $ mkdir docker # docker配置文件夹

创建app.py

  1. from flask import Flask
  2. from redis import Redis
  3. app = Flask(__name__)
  4. redis = Redis(host='redis', port=6379)
  5. @app.route('/')
  6. def hello():
  7. count = redis.incr('hits')
  8. return 'Hello World! I have been seen {} times.\n'.format(count)
  9. if __name__ == "__main__":
  10. app.run(host="0.0.0.0", debug=True)

创建requirements.txt

  1. flask
  2. redis

(2) 创建Dockerfile

构建flask web应用的镜像

  1. FROM python:3.7-slim
  2. COPY src/ /opt/src
  3. WORKDIR /opt/src
  4. RUN pip install -r requirements.txt
  5. CMD ["python", "app.py"]

(3) 创建docker-compose.yml

  1. version: '3'
  2. services:
  3. web:
  4. build: ../
  5. ports:
  6. - "5000:5000"
  7. redis:
  8. image: redis:3.0.7

这个compose文件定义了两个服务,即定义了web和redis两个容器。

  • web容器:
    • 使用当前docker-compose.yml文件所在目录的上级目录(compose_test/Dockerfile)中的Dockerfile构建映像。
    • 将容器上的暴露端口5000映射到主机上的端口5000。 我们使用Flask Web服务器的默认端口5000。
  • redis容器:
    • redis服务使用从Docker Hub提取的官方redis镜像3.0.7版本。

      (4) 执行docker-compose.yml构建并运行

      1. docker-compose up