配置Flask应用为docker容器

549 阅读2分钟

如何把自己的Flask配置 Docker Compose 主要涉及编写一个 docker-compose.yml 文件,该文件描述了要运行的服务、它们的依赖关系以及其他配置选项。以下是一个简单的例子,展示了如何配置一个基本的 Docker Compose 文件来运行一个 Web 服务。

假设你要运行一个基于 Flask 的 Web 服务。首先,确保你已经安装了 Docker 和 Docker Compose。

  1. 创建一个新目录,例如 myapp,并在其中创建一个 app 目录用于存放 Flask 应用代码。

  2. myapp 目录中创建一个 docker-compose.yml 文件,并将以下内容添加到文件中:

    version: '3.7'
    
    services:
      web:
        build: ./app
        ports:
          - "5000:5000"
      environment:
        OPENAI_API_KEY: "your_openai_api_key_here"
    

    这个 docker-compose.yml 文件定义了两个服务:webweb 服务使用本地的 ./app 目录作为构建上下文,并将容器的 5000 端口映射到主机的 5000 端口。

  3. myapp/app 目录中创建一个简单的 Flask 应用,例如:

    from flask import Flask
    from flask import jsonify
    
    app = Flask(__name__)
    
    @app.route('/')
    def hello_world():
        return jsonify(message="Hello, World!")
    
    if __name__ == '__main__':
        app.run(host='0.0.0.0')
    
  4. 最后,在 myapp 目录中打开终端,运行以下命令启动服务:

    sudo docker compose up
    

    这会构建并启动 web 服务。Flask 应用将在 http://localhost:5000 上运行,并返回一个简单的 JSON 响应。

如果有依赖需要配置一个Dockerfile

./app 目录中,你需要有一个 Dockerfile 文件,用于构建你的 Python 应用镜像。这个 Dockerfile 可以是这样的:

Dockerfile
Copy code
FROM python:3.8-slim

WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

CMD ["python", "app.py"]

一些命令

生成requirements.txt文件

pip freeze > requirements.txt

启动docker

sudo docker compose up

如果修改了Dockerfile发现配置没有生效,需要增加一个参数

sudo docker-compose up --build

如果测试稳定了.可以长期启动

sudo docker compose -d

查看都有哪些docker

sudo docker ps

关闭这个docker

sudo docker-compose down

进入这个docker

sudo docker exec -it make_video-web-1 bash

make_video-web-1为docker名字,可以使用docker ps查看

查看这个docker的日志

sudo docker logs -f make_video-web-1

同步docker中的时间

version: '3.8'

services:
  my_service:
    image: my_image
    container_name: my_container
    cap_add:
      - SYS_TIME
    volumes:
      - /etc/localtime:/etc/localtime:ro

可以从docker中查看日志

  • 去掉nohup
  • ENV PYTHONUNBUFFERED=1 //设置环境变量以禁用输出缓冲