从一穷二白开始,快速撸一遍配置docker的流程,最后启动一个 flask

最近项目需要,将一个轻量级的flask (配合gunicorn)应用放在docker 上,于是记录一下流程:

从一穷二白开始, 拉一个centos 7 镜像

$docker pull centos:7 

启动一个容器, 

$docker run -itd centos:7 /bin/bash

然后 docker ps 看一下 container id, 由于要安装一些其他的c++ 库,并且更新python3的 版本,所以进入到容器内部,

这里记录 两个小坑,1. centos7 gcc 的版本 太低,4.5,由于要支持c++17需要升级到 7.0以上,参考以下帖子:

https://blog.csdn.net/cocacola81/article/details/106086297?utm_medium=distribute.pc_relevant.none-task-blog-title-10&spm=1001.2101.3001.4242

之后要安装一个 python3.8.3 参考:

https://blog.csdn.net/z736248591/article/details/106844901 

确认容器的库和python版本和我本地测试相同后,开始复制文件到容器:

$docker cp  本地文件  容器名:文件路径

作为测试 我复制一个 flask_hello_world.py 到容器的 /project/ 下

代码:
from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    print('This is the root!')
    return 'Hello World'
if __name__ == '__main__':
    app.run(debug=False, port=8001)

gunicorn.conf.py 文件也很简单只要配置绑定端口 和 协程个数:

workers = 5    
bind = "0.0.0.0:8001"

然后导出这个跨了各种坑的容器(来之不易啊)到一个镜像作为修改后的基础镜像

docker commit -a "作者信息" -m "导出信息"  容器id  导出镜像名称:tag

比如:$docker commit -a "Thanos" -m "a test image"  xxxxxxxx  test_image:v0.0

之后 docker image 一下 可以看到对应名称的镜像

接下来做一个测试用的 dockerfile 内容如下,  从我们导出的基础镜像作为基础, 工作目录为 /project, 容器启动命令为 python3 ./flask_hello_world.py

FROM test_image:v0.0

WORKDIR /project

COPY flask_hello_world.py ./flask_hello_world.py
COPY gunicorn.conf.py ./gunicorn.conf.py

CMD ["gunicorn","flask_hello_world:app","-c","gunicorn.conf.py"]

之后build 这个应用的镜像(在当前dockerfile 所在的文件夹)

$docker build -t test_test_image .   (最后点代表当前文件夹位置)

可以看到做出了一个新的 镜像叫 test_test_image

终于可已启动容器了!!docker run的参数不多说了。绑定容器内gunicorn(flask)端口8001 到 服务器端口8002

$docker run -itd  -p 8002:8001 test_test_image

之后docker ps 看下容器已经起来了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chenxin0215

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值