Docker-compose 实战:Flask应用的构建与部署
创作时间:
作者:
@小白创作中心
Docker-compose 实战:Flask应用的构建与部署
引用
1
来源
1.
https://www.cnblogs.com/xfbk/p/18625186
本文将通过一个具体的Flask应用示例,详细介绍如何使用Docker-compose来构建和运行Docker容器。文章将涵盖项目结构、Dockerfile编写、docker-compose.yml配置以及服务的启动和镜像的重建等关键步骤。
一、使用 Docker-compose 启动 Flask 应用的示例
项目结构
app/
|-- app.py
|-- requirements.txt
|-- Dockerfile
|-- docker-compose.yml
app.py 文件内容
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello from Flask in Docker!'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
requirements.txt 文件内容
Flask
Dockerfile 文件内容
# 基于官方 Python 3.9 镜像构建
FROM python:3.7
# 设置工作目录
WORKDIR /app
# 复制当前目录下的所有文件到容器内的 /app 目录
COPY . /app
# 安装应用依赖
RUN pip install -r requirements.txt
# 暴露容器内应用监听的端口
EXPOSE 5000
# 定义容器启动时执行的命令
CMD ["python", "app.py"]
docker-compose.yml 文件内容
version: '3'
services:
flask-app:
build: .
ports:
- "5000:5000"
在上述 docker-compose.yml 文件中:
version: '3'表示使用Docker-compose的版本 3 语法。services下定义了一个名为flask-app的服务。build:.表示基于当前目录下的Dockerfile构建镜像。ports部分将容器内的5000端口映射到主机的5000端口,以便在主机上可以访问容器内的Flask应用。
在包含 docker-compose.yml 文件的目录下,执行命令 docker-compose up -d 即可在后台启动 Flask 应用容器。之后,可以在浏览器中访问 http://localhost:5000 来查看 Flask 应用的输出 Hello from Flask in Docker! 。如果想要停止容器,可以使用命令 docker-compose down 。
二、重新构建服务镜像
这个警告信息来自 Docker Compose,意味着 flask-app 服务的镜像是新建的,因为之前不存在。如果你对 Dockerfile 或其依赖的文件(比如 requirements.txt)做了更改,并希望这些更改生效,你需要重新构建镜像。
以下是重新构建服务镜像的步骤:
使用 docker-compose build
在包含 docker-compose.yml 文件的目录中,运行以下命令来重新构建镜像:
docker-compose build
这个命令会根据 docker-compose.yml 文件中定义的服务重新构建所有服务的镜像。
使用 docker-compose up --build
如果你想在重新构建镜像的同时启动服务,可以使用以下命令:
docker-compose up --build
这个命令不仅会重新构建服务的镜像,还会启动服务。
注意事项
- 确保你在运行这些命令之前已经保存了对
Dockerfile或其他相关文件的更改。 - 如果你只想重新构建某个特定的服务,可以通过指定服务名称来构建:
或者docker-compose build flask-appdocker-compose up --build flask-app - 确保
docker-compose.yml文件和Dockerfile位于同一目录下,并且Dockerfile中的指令正确无误。
按照这些步骤操作,你可以确保 flask-app 服务使用的是最新的镜像,包含了所有最新的更改。
热门推荐
许多恐龙身材巨大,它们放屁会产生什么影响?
大学生金融知识指南:从基础入门到实战应用
各个年代的高材生,人才比例,本科遍地走,硕士比当年多的多原因分析!!
经营分析只会数据的同环比?要搭建数据指标体系,实现经营目标
让自然水变为发展水,广东水经济试点项目“吸金”超37亿元
粉末冶金齿轮与锻造齿轮的优缺点对比
肠道里的“健康盟友”:肠菌检测,让您的健康管理更精准
其他综合收益与留存收益:概念与区别解析
苹果或准备开放NFC功能!可以解锁门禁卡,车钥匙等
如何让物业同意安装充电桩
什么是圣餐礼?一个与上帝同食的机会
成都都江堰旅游攻略,揭秘无坝引水的千年奥秘,见证古人治水传奇
多大尺寸的行李箱可以登机?能带包吗?40家航空公司规定全在这啦!
喝茶能提神?原来是茶含有的4种物质在起作用!
Excel按月利息计算公式详解
追讨加班费如何举证?一文详解加班费计算与证据准备
室内滑雪需要雪镜吗
如何通过戴眼镜预防近视加重
打开你的腋窝,释放负面情绪
如何合理规划家庭财务以应对房贷压力?这种财务规划如何影响家庭长期稳定?
早搏是什么原因引起的?早搏会死人吗?
如何选择适合的国债投资?这些国债投资的收益和风险如何评估?
阿西洛马会议50周年:探讨完善基因改造技术法规
央视力挺!李晓华理发技艺火爆全网,网友:建议全国巡剪
阳澄湖大闸蟹识别全攻略:从传统方法到智能软件
银行的对公账户转账有哪些方式?
为32名"陪读妈妈"解"薪"愁
乌克兰人口危机:一场正在上演的人口灾难
金巴利:意大利经典开胃酒的品鉴与饮用指南
宽容与理解,婚姻幸福的基石