使用Docker部署有诸多好处,flask程序也通常需要搭配一个高性能的wsgi容器,今天就记录一下在使用docker+gunicorn+flask过程中的一些坑,错误之处欢迎指正。
一个简单的demo(宿主机为ubuntu18.04),先来看目录结构:
即 myweb/src/为flask工程路径,与src目录同级的Dockerfile、run.sh文件分别用于构建docker镜像和docker-entrypoint脚本,requirement.txt为flask所需依赖
再来看一下Dockerfile:
FROM centos
WORKDIR /var/jenkins_home/workspace
# 添加文件
ADD src /var/jenkins_home/workspace/src
ADD run.sh /var/jenkins_home/workspace/
ADD Dockerfile /var/jenkins_home/workspace/
ADD requirements.txt /var/jenkins_home/workspace/
# 时区设置
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo 'Asia/Shanghai' >/etc/timezone
# 安装pip及flask依赖
RUN yum -y install epel-release
RUN yum -y install python-pip
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
# 安装gunicorn
RUN pip install gunicorn -i https://pypi.tuna.tsinghua.edu.cn/simple
# 建日志目录
RUN mkdir -p /var/jenkins_home/workspace/log/
RUN chmod +x /var/jenkins_home/workspace/run.sh
# 声明数据卷挂载点
VOLUME /var/jenkins_home/workspace
# 启动命令
ENTRYPOINT ["./run.sh"]
# 容器暴露端口
EXPOSE 8000

本文详细介绍了如何使用Docker部署Gunicorn和Flask应用程序,包括Dockerfile的编写、依赖管理、容器运行脚本的创建以及解决遇到的问题,如时区设置、文件夹添加、gunicorn命令的使用等。
最低0.47元/天 解锁文章
1890





