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-app
docker-compose up --build flask-app
- 确保
docker-compose.yml
文件和Dockerfile
位于同一目录下,并且Dockerfile
中的指令正确无误。
按照这些步骤操作,你可以确保 flask-app
服务使用的是最新的镜像,包含了所有最新的更改。
热门推荐
汽车车身硬度与安全性的真相关系,你真的了解吗?
购房问答:父母公积金贷款、二套房认定及后悔买房后的解决办法
疤痕体质的原因及调理方法
一文读懂中外合作办学硕士:优势、模式与报考条件
大盘分时资金线指标:股市投资的重要技术工具
如何通过检验了解怀孕维生素情况?
身体缺水的表现
安全之图像威胁(Security Image Threats)
瑜伽:身心合一的修行之道
工业除湿机:除湿机怎么使用才正确有效
育儿专家:宝宝这3处要多摸,孩子更聪明,可是很多家长不碰
彻底摆脱广告侵扰:安卓和苹果手机关闭广告推送全攻略
如何评估城市交通系统的效率和便利性?这些评估如何影响居民的日常出行?
摄像头研发需要什么软件
萧山经济的发展趋势如何?这种趋势对当地居民生活有何影响?
皮肤科医师推荐的7大内调抗痘饮食,很多韩星都在用!
赶黄草:一种传统中药材的现代医学价值
耳石症治疗:8种复位手法,让逃跑的“石头”快速归位!(图文+教学视频详解)
90后小夫妻的生存挑战:缺钱的困局如何打破
2025年澳洲留学新政解析:签证办理周期延长与申请注意事项
光伏电池的技术路线之争:一条没有终点的旅程
医学PPI是什么意思
唱响英语学习
什么是虚拟数字人?
4种“偷钙”食物曝光,中老年骨质疏松原来是这样来的
快开学了,一起来守护脑健康
“矫正神器”真的可以矫正弯腰驼背吗?
基于GNSS终端的路基沉降监测保障路网安全
合肥美食攻略十大必吃排行榜,解锁庐州味蕾的十大佳肴
“交代”与“交待”:这两个词的用法和含义有哪些不同?