docker-compose Flask 应用+redis
时间: 2024-09-08 17:02:35 浏览: 90
Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具,通过一个简单的 `docker-compose.yml` 文件就可以管理应用的所有服务。当你想要部署一个 Flask 应用并整合 Redis 作为缓存或消息队列时,可以使用 Docker Compose 来同时运行 Flask 应用和 Redis 服务。
下面是一个简单的 `docker-compose.yml` 文件示例,用于部署一个 Flask 应用和 Redis 服务:
```yaml
version: '3.8'
services:
web:
build: .
ports:
- app-network
redis:
image: redis:alpine
networks:
- app-network
networks:
app-network:
driver: bridge
```
在这个配置中:
- `web` 服务使用当前目录下的 `Dockerfile` 构建 Flask 应用的镜像。
- `ports` 将容器内部的5000端口映射到宿主机的5000端口。
- `depends_on` 表示 web 服务依赖于 redis 服务。
- `redis` 服务使用官方的 Redis 镜像,并设置为 `alpine` 版本以减小镜像大小。
- `networks` 定义了一个名为 `app-network` 的桥接网络,使得 web 和 redis 服务能够在同一个网络中通信。
你还需要创建一个 `Dockerfile` 来告诉 Docker 如何构建你的 Flask 应用镜像。一个简单的 `Dockerfile` 可能看起来如下:
```Dockerfile
# 使用官方 Python 开发镜像
FROM python:3.8-slim
# 设置工作目录
WORKDIR /usr/src/app
# 将依赖文件复制到容器内
COPY requirements.txt ./
# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt
# 将应用源代码复制到容器内
COPY . .
# 暴露端口
EXPOSE 5000
# 运行 Flask 应用
CMD [ "python", "./app.py" ]
```
这个 `Dockerfile`:
- 使用 Python 3.8 的瘦版镜像作为基础镜像。
- 设置工作目录到 `/usr/src/app`。
- 将依赖文件 `requirements.txt` 复制到容器中,并安装这些依赖。
- 将当前目录下的所有文件复制到容器中的工作目录。
- 暴露5000端口,这是 Flask 应用默认监听的端口。
- 设置容器启动时执行的命令为运行 Flask 应用。
在构建和启动服务之前,确保你的 Flask 应用能够在本地正常运行,并且已经创建了 `requirements.txt` 文件列出了所有依赖。
要构建并启动服务,执行以下命令:
```bash
docker-compose up --build
```
这将根据 `docker-compose.yml` 文件和 `Dockerfile` 构建 Flask 应用镜像,并启动 Flask 应用和 Redis 服务。
阅读全文