快速上手Docker部署Flask项目 附常见问题解决

一、准备 Flask 项目

1. 项目结构

  • 有一个app.py文件作为主应用程序入口,内容示例:
from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'
    
if __name__ == '__main__':
    app.run(host='0.0.0.0')

注意:一定要配置host为0.0.0.0,否则无法访问端口

2. 安装依赖

  • 在项目目录下创建一个requirements.txt文件,列出项目所需要的 Python 包。例如:
flask
flask_sqlalchemy

二、创建 Dockerfile

1. 基础镜像选择

  • 在项目根目录下创建一个Dockerfile。首先,选择一个合适的基础镜像。对于 Python Flask 项目,通常选择基于 Python 的官方镜像。例如,如果你使用 Python 3.10,你可以使用python:3.10 - slim作为基础镜像。slim版本的镜像体积较小,没有包含一些不必要的工具和库,减少镜像大小。
FROM python:3.10-slim

注意:如果出现错误,换国内源-阿里云即可解决

ERROR: failed to solve: python:3.8-slim: failed to resolve source metadata for docker.io/library/python:3.8-slim: unexpected status from HEAD request to https://xxxx.mirror.aliyuncs.com/v2/library/python/manifests/3.8-slim?ns=docker.io: 403 Forbidden
FROM alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/python:3.11.1

2. 设置工作目录

  • 设置容器内的工作目录,用于存放你的应用程序代码。
WORKDIR /app

3. 复制项目文件和安装依赖

  • 将本地项目文件复制到容器的工作目录中。
COPY . /app
  • 然后安装项目所需的 Python 依赖。运行pip install命令来安装requirements.txt中列出的所有包。
RUN pip install -r requirements.txt

4. 暴露端口

  • Flask 应用通常运行在一个端口上,如5000。你需要在 Dockerfile 中暴露这个端口,以便外部可以访问容器内的应用。
EXPOSE 5000

5. 设置启动命令

  • 最后,设置容器启动时要执行的命令。对于 Flask 应用,通常是运行python app.py(假设你的主应用文件是app.py)。
CMD ["python", "app.py"]

三、构建 Docker 镜像

1. 打开终端

  • 在包含Dockerfile的项目目录下打开终端。

2. 构建镜像

  • 运行docker build命令来构建镜像。命令格式为docker build -t your_image_name:tag.,其中your_image_name是你给镜像起的名字,tag是镜像的标签(可以是版本号等,例如1.0)。例如:
docker build -t my_flask_app:1.0 .
  • 这个过程可能需要一些时间,因为它要根据Dockerfile中的指令来创建镜像,包括下载基础镜像、复制文件、安装依赖等步骤。

四、运行 Docker 容器

  • 构建好镜像后,使用docker run命令来运行容器。例如:
docker run -p 1000:5000 my_flask_app:1.0
  • 这里-p 1000:5000表示将主机的5000端口映射到容器内的1000端口。这样,你就可以通过在浏览器中访问http://localhost:1000来查看 Flask 应用了。
posted @ 2024-11-07 22:30  xiins  阅读(65)  评论(0编辑  收藏  举报