首页 > 其他分享 >使用Docker启动并运行Flask应用

使用Docker启动并运行Flask应用

时间:2023-02-18 11:34:32浏览次数:52  
标签:启动 Flask demo app flask 镜像 Docker Dockerfile docker

(一) 拉取 Python 镜像

docker pull python

# 查看当前主机中存在的镜像
docker images

(二) 编写 flask 应用

1. 创建一个目录

mkdir flask_demo

# 进入目录中
cd flask_demo

2. 创建 flask 应用

使用 vi 编辑 app.py 文件

vi app.py

app.py 文件的内容

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return 'hello world'

(二) 编写 Dockerfile 生成镜像以及相关操作

1. 编写 Dockerfile 文件

app.py 和 Dockerfile 文件在同一个目录下

使用 vi 编辑 Dockerfile 文件

vi Dockerfile

Dockerfile 文件的内容

# 指定下载 python 版本,说明该镜像以哪个镜像为基础
FROM python:3.8.5

# 构建者的基本信息
MAINTAINER whxcer

# 创建 app 文件夹
RUN mkdir -p /app

# 进入 app 目录
RUN cd /app
# 或 WORKDIR /app

# 在容器内部执行的命令
RUN pip install flask -i https://pypi.douban.com/simple/
# RUN pip install -r requirements.txt -i https://pypi.douban.com/simple/

# 将 linux 系统当前目录下的内容拷贝到容器的 /app 目录下
ADD . /app

# 暴露 5000 端口
EXPOSE 5000

# 将 app 文件夹为工作目录
WORKDIR /app

# 容器启动的时候执行的命令 flask run
CMD ["flask", "run", "--host", "0.0.0.0"]
# 用单引号的话,flask应用启动不起来,必须要用双引号

提示:虽然可以先手动运行原生的镜像,进入容器后再手动去下载程序依赖以及运行应用,但是不建议这样做,这样操作麻烦还耗时。最佳的方案是编写一个 Dockerfile,并在每次发生更改(例如修改源代码)时构建镜像的新版本。

2. 构建镜像

有了 Dockerfile 之后,就可以利用 docker build 命令构建镜像了

docker build -t="flask_demo" .
或
docker build -t flask_demo .

命令说明

  • -t 用来指定新镜像的用户信息、名字、版本等
  • . 命令最后的 点 表示在当前目录寻找 Dockerfile 文件

3. 查看构建之后的镜像

docker images

4. 使用镜像,启动容器

docker run -d -p 5000:5000 flask_demo

5. 查看启动后的容器

docker ps

6. 停止项目

docker stop 容器id

7. 操作示意图

image
image

标签:启动,Flask,demo,app,flask,镜像,Docker,Dockerfile,docker
From: https://www.cnblogs.com/wanghuizhao/p/17132229.html

相关文章

  • centos下docker中安装kong
    1、初始化docker环境:yuminstall-yepel-releasecurl-fsSLhttps://get.docker.com/|shsystemctldaemon-reloadsystemctlenabledocker.servicesystemctlrestartdoc......
  • 安装Docker容器
    安装docker1、Docker要求CentOS系统的内核版本高于3.10,查看本页面的前提条件来验证你的CentOS版本是否支持Docker。通过uname-r命令查看你当前的内核版本$unam......
  • 在 Linux 中Docker上安装、启用 SQL Server 代理
     一、使用Docker运行SQLServerLinux容器映像https://learn.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-docker?view=sql-server-linux-ver15&piv......
  • Kafka启动失败异常-InconsistentClusterIdException
    一、场景通过Kafka启动命令启动Kafka无响应,每台机器的Zookeeper都已启动,但是Kafka无响应。或者出现命令刚启动的时候jps可见kafka进程,但是过一点时间后又消失不见。 二......
  • 冰河指南AI技术社区基于ChatGPT正式启动运营
    大家好,我是冰河~~最近ChatGPT真的太火了,科技圈几乎都在争相报导这个黑科技,它能够通过学习和理解人们的语言来和人类进行对话,能够与人们进行交流,甚至可以对你提出的问题进......
  • docker学习记录
    系统环境NAME="Ubuntu"VERSION="18.04.2LTS(BionicBeaver)"感受惊为天人,这玩意真的好用在我目前来看,docker就是一个轻量化的虚拟机,用多了vmware,用这样迅捷的虚拟......
  • 嵌入式ARM设计编程(四) ARM启动过程控制
    文章和代码已归档至【Github仓库:​​hardware-tutorial​​】,需要的朋友们自取。或者关注公众号【AIShareLab】,回复嵌入式也可获取。一、实验目的(1)掌握建立基本完整的ARM......
  • elastic-job服务启动报错,问题排查
     elastic-job服务启动报错,报错信息:org.quartz.SchedulerException:Jobthrewanunhandledexception.atorg.quartz.core.JobRunShell.run(JobRunShell.java:213)at......
  • docker rabbitmq数据持久化
    RabbitMQ消息队列怎样做到服务宕机或重启消息不丢失RabbitMQ确保持久性消息能从服务器重启中恢复的方式是,将它们写入磁盘上的一个持久化日志文件。当发布一个持久性消息到......
  • 外部连接不上 docker内的Mysql,telnet不通3306
    本机vm打开虚拟机后,自动启动mysql,查看容器运行一切正常:dockerps-a 所有映射的端口,在外部都telnet不通,比如3306、6379等都不行。想着在别人都ok的,在我这里不行,问题......