docker容器部署flask单页面应用
2024-09-18 19:50:59
本地安装docker,拉取centos镜像。
docker pull centos:7
本地文件结构:
/usr/local/var/tmp/docker_demo
.app
---requirements.txt
---run.py
.Dockerfile
Dockerfile文件内容
FROM centos:7 RUN mkdir /flask_app
COPY ./app/ /flask_app
WORKDIR /flask_app RUN yum -y upgrade && yum -y install python3 RUN pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple EXPOSE 80
ENTRYPOINT pytihon3 run.py runserver
文件逐行参数解析:
FROM centos:7 # centos7打底 RUN mkdir /flask_app # 在容器内根目录创建一个文件夹
COPY ./app/ /flask_app # 把本地环境中当前路径里面的app文件夹整个文件夹,拷贝到容器内新创建的文件夹下
WORKDIR /flask_app # 容器内主程序文件夹 RUN yum -y upgrade && yum -y install python3 # 安装python3环境,必须要先升级yum,再安装python3,还有参数-y必须加上,
# 否则报错with none-zero code:1 RUN pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple # 把应用环境依赖装上,带上国内pypi镜像源,可加速安装 EXPOSE 80 # 暴露80端口
ENTRYPOINT pytihon3 run.py runserver # 主程序启动命令。docker容器一旦创建,主程序就自动启动
run.py文件内容:
from flask import Flask app = Flask(__name__) @app.route("/index")
def index():
return "Hello World!" if __name__ == "__main__":
app.run(host="0.0.0.0", port=80)
这里IP必须写成“0.0.0.0”
requirements.txt文件内容:
Flask==1.1.4
接下来开始执行命令:
执行命令之前,需要在/usr/local/var/tmp/docker_demo 这个路径下面,因为整个工程代码都在这里
docker build -t demo-dockerflask:v715-demo .
-t demo-dockerflask:v715-demo 自定义docker镜像名称、版本号
. 指定Dockerfile文件路径
开始创建容器
docker run -d -p 80:80 --name demo-dockerflask-1 demo-dockerflask:v715-demo
-d 是后台运行该容器
-p 80:80 docker端口映射。主机端口:docker开放端口。主机端口80被Docker 开放的 80 端口映射上。“:80”docker开放端口,需要跟容器内部的应用端口一致。容器内部应用,不论是直接runserver的应用,还是配置了uwsgi的应用,还是配置了nginx的应用,都需要跟docker开放端口对应上,否则会在浏览器显示拒绝连接请求。
--name demo-dockerflask-1 自定义docker容器的名字
demo-dockerflask:v715-demo 创建容器用的 镜像:该镜像的tag
本地浏览器输入url地址:
http://127.0.0.1/index
即可得到
“
Hello World!
”
输出结果
最新文章
- mySQL 中主键值自动增加
- [Cordova] Plugin开发架构
- Kafka笔记
- C++ 之const Member Functions
- Linux:安装OpenSSH-Server E:Package openssh-server has no installation candidate
- hdu2896病毒侵袭(ac自动机)
- System Center的一些资料收集
- ajax post方法
- iterm快捷键及操作技巧(附Linux快捷键)
- 《Head First 设计模式》学习笔记——模板方法模式
- 关于UITextfield弹出键盘解决方案
- IntelliJ IDEA(九) :酷炫插件系列
- c++对象的存储空间
- 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU启动那些事(8)- 从Raw NAND启动
- kubernetes1.5.2 DNS
- 伪静态的服务器配置-如何php为 Discuz! X2 配置伪静态
- meta-inf文件夹以及MANIFEST.MF文件的作用
- android音乐播放器开发 SweetMusicPlayer 摇一摇换歌
- hdu3874
- sqlserver导出为EXcel--CSV格式