Loading

Docker Compose 学习笔记

Docker Compose 学习笔记

Docker Compose 安装

安装完 Docker Engine 后,以插件方式安装 Docker Compose:

  1. 设置安装源
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  1. 安装 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 命令即可。

posted @ 2024-09-26 16:50  杨谖之  阅读(10)  评论(0编辑  收藏  举报