Docker Compose 学习笔记
Docker Compose 学习笔记
Docker Compose 安装
安装完 Docker Engine 后,以插件方式安装 Docker Compose:
- 设置安装源
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- 安装 Compose plugin
sudo yum update
sudo yum install docker-compose-plugin
实例
在这里,我们将创建一个 Web 应用程序,该实例参考 Docker Compose 官方文档,有两个服务,并做了一些改变。
本实验需要两个容器:
- Web 容器:提供 Web 服务,并连接后端的 Redis 服务。
- Redis 容器:提供 Redis 服务,接收 Web 容器的连接。
其文件目录结构如下所示:
app
|----web
| |----web.py
| |----requirements.txt
| |----Dockerfile
|
|----docker-compose.yml
相关文件
~/app/web/web.py
from flask import Flask
from redis import Redis
app = Flask(__name__)
redis = Redis(host='redis', port=6379)
@app.route('/')
def hello():
redis.incr('number')
return 'Hello Shiyanlou! # %s' % redis.get('number')
if __name__ == "__main__":
app.run(host="0.0.0.0", port=80, debug=True)
上述代码创建一个十分简单的 Web 应用程序。该程序会连接 Redis 服务,在访问 / 页面时,会自动将变量 number 加 1。
~/app/web/requirements.txt
flask==1.1.4
redis==3.5.3
markupsafe==2.0.1
~/app/web/Dockerfile
FROM python:3.8
COPY ./ /web/
WORKDIR /web
RUN pip install -r requirements.txt
CMD python web.py
上述 Dockerfile 定义了一个镜像,该镜像基于 python:3.8 镜像制作,在其基础上安装相应的 Python 包,并执行 CMD 命令来启动该应用程序。
~/app/docker-compose.yml
services:
redis:
image: redis:6.0
web:
build:
context: /home/shiyanlou/app/web
depends_on:
- redis
ports:
- 8001:80/tcp
volumes:
- /home/shiyanlou/app/web:/web:rw
version: "3.0"
该 docker-compose.yml 文件定义了两个服务,分别为 web 和 redis 服务。配置了 web 服务的端口映射,以及挂载相应的目录。 depends_on 定义了依赖关系,被依赖服务的容器需要先创建。
进入 app 目录下,执行 docker-compose up 命令来启动服务:
启动 compose
cd app
docker-compose up
由于此时 web 服务的镜像还未构建,所以此时会自动根据 build 指示,使用 /home/shiyanlou/app/web/Dockerfile
文件构建镜像。
除此之外,也可以使用 -d 参数,即 docker-compose up -d
在其在后台运行:
如果需要暂停以及删除容器,可以直接运行 docker-compose down
命令即可。