首页 > 其他分享 >快速上手Docker部署Flask项目 附常见问题解决

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

时间:2024-11-07 22:18:58浏览次数:1  
标签:__ 常见问题 Flask app python 镜像 Docker docker

一、准备 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 应用了。

标签:__,常见问题,Flask,app,python,镜像,Docker,docker
From: https://www.cnblogs.com/xiins/p/18534132

相关文章

  • 常用docker命令
    systemctlstartdocker#启动docker服务systemctlstopdocker#停止docker服务systemctlrestartdocker#重启docker服务dockerimages#列出所有镜像dockerps-a#列出所有容器dockerstop容器ID#停止运行指定的容器dockerrm容器ID#删除指定......
  • docker如何实时查看项目的日志
    1.使用dockerlogs命令基本语法和原理:dockerlogs命令用于获取容器的日志输出。默认情况下,它会显示容器启动后到当前时间的所有日志内容。当你在容器内的应用程序将日志输出到标准输出(stdout)或标准错误输出(stderr)时,这些日志可以通过dockerlogs命令进行查看。加上-f选项(类似......
  • 轻松上手:在Linux上用Docker部署Cloudreve云盘,远程访问无压力!
    文章目录前言1.安装Docker2.使用Docker拉取镜像3.创建并启动Cloudreve容器4.本地访问测试5.公网远程访问本地Cloudreve5.1内网穿透工具安装5.2创建远程连接公网地址5.3使用固定公网地址远程访问前言本文主要介绍如何在Linux系统使用Docker快速部署Cloudrev......
  • Ubuntu Focal 20.04 (LTS) 安装 Docker
    官方安装文档:https://docs.docker.com/engine/install/ubuntu/系统要求:ubuntu必须是以下几个系统之一,64位。UbuntuNoble24.04(LTS)UbuntuJammy22.04(LTS)UbuntuFocal20.04(LTS)查看系统内核$uname-a安装步骤:1.更新ubuntu$sudoapt-getupdate2.添加Docker库......
  • docker实现redis集群
    1.主从模式(Master-Slave)1.1主从复制原理主从复制是redis的一种基本的集群方式,它通过将一个Redis节点(主节点)的数据复制到一个或多个其他Redis节点来实现数据的冗余和备份主节点负责处理客户端的写操作,同时从节点回自动同步主节点的数据。客户端可以从从节点读取数据,实现读取分离......
  • docker安装配置dnsmasq
    docker下载安装参考:docker安装、卸载、配置、镜像如果是低版本的额ubuntu,比如ubuntu16.04.7LTS,为了加快下载速度,参考:Ubuntu16.04LTS安装Docker。docker安装dnsmasq下载dnsmasq镜像首先镜像我们可以选择带web页面的,也可选择不带的,这里选择带web也免的,方便不懂技术的人配置。dock......
  • IOR的脚本化、版本兼容性及常见问题解答
    脚本化IOR可以使用-f选项在命令行中使用输入脚本。在-f选项之前设置的命令行选项将被视为运行脚本的默认设置。例如:mpirun./ior-W-fscript将使用隐式-W运行脚本中的所有测试。脚本本身可以覆盖这些设置,并且可以设置为在一次执行下运行许多不同的IOR测试,重要的是要注意在-......
  • win11中使用docker-nacos连接容器中的mysql实例记录
     二.方式11.拉取nacosdockerpullnacos/nacos-server2.在dockerdesktop中进行配置如下图相比较’方式2‘这种方式更简单,mysqlip地址需要使用ipv4地址,具体的自己查看ipconfig的ipv4地址(注意:localhsot/127.0.0.1/容器名称都是不行的)下面这几个参数在application.proper......
  • docker命令1
     dockerrun--privileged-d--restart=always--namexxx_video_service--net=host-v/docker/data/video/xxx:/mnt/data/xxx-v/docker/data/video/testVideo:/root/testVideo192.168.21.237:50000/xyxy-amd/xxx_video_service:V1.1.1.20100531_Alpha 有的宿主机......
  • GPU 环境搭建指南:如何在裸机、Docker、K8s 等环境中使用 GPU
    本文主要分享在不同环境,例如裸机、Docker和Kubernetes等环境中如何使用GPU。跳转阅读原文:GPU环境搭建指南:如何在裸机、Docker、K8s等环境中使用GPU1.概述仅以比较常见的NVIDIAGPU举例,系统为Linux,对于其他厂家的GPU设备理论上流程都是一样的。省流:对于裸......