伸缩自如的Flask [day 18] Docker image化--运行篇

首先,我们可以先拉一下底层的image,再把我们的app内容叠上去,从终端机(cmd)打上:

docker pull python

成功的话,可以在介面上看到新的image
https://ithelp.ithome.com.tw/upload/images/20210531/20122678lJHdPo4C9i.png

再来,我们可以开始写dockerfile(可以放在主程序的旁边)https://ithelp.ithome.com.tw/upload/images/20210531/20122678MPst4llzTw.png:

FROM python:3.9-buster

WORKDIR /app

COPY . /app

RUN apt-get update

RUN apt-get install nano

RUN pip install -r requirements.txt

CMD python3 main.py 

可以看到python:3.9-buster为我们刚刚拉到的image名称,再来将目前路径的程序都放到未来container中/app的地方。更新套件及装上nano,未来如果有小地方要修改的话,可以方便我们使用

docker exec -it <container ID> bash

来进行小幅度的修改(注意,小心不要引起git版本的冲突)。
再来藉由requirements.txt来安装想使用的python套件。

在测试阶段可以先使用CMD python3 main.py ,
但是在未来需要正式营运时可以开始使用gunicorn(如果你比较喜欢uwsgi,也可以用这个套件,但是我比较喜欢绿色独角兽)。

CMD  nohup gunicorn -w 4 main:app --access-logfile gunicorn_access.txt --error-logfile gunicorn_error.txt -b :5000

nohup可以帮助我们避免关闭session时产生input/output Error,当然你如果都不print东西,也可以避免这个错误。

我们可以将那些路由被接触了,写在gunicorn_access.txt,
错误讯息写在gunicorn_error.txt,
而对外port设定为5000。

进行build image的程序,. 代表现在的路径,代表我们在dockerfile的路径上执行:

docker image build -t <喜欢的image name> .

最後将image run成container,以提供我们的服务:

docker run -p 3000:5000  <喜欢的image name>

https://ithelp.ithome.com.tw/upload/images/20210531/20122678Axo3GS7aJE.png
对内port为3000,对外为5000,我们可以从localhost:3000来看到我们的服务。


<<:  JavaFX+SceneBuliider+jfoneix +eclipse 安装

>>:  Day 6 (CSS)

[C 语言笔记--Day05] C 语言的 function call 如何被组合语言实作 II

延续上一篇的话题 这篇文章要来讲当 C 语言中的 function 需要 6 个以上的参数时(虽然这...

Day.10 「没有 RWD 的网站 === 没有未来」 —— RWD 响应式网页设计

虽然标题有点耸动,但在这个行动装置越来越多的现在,如果没有手机版的网页,SEO 排名会大受影响,也...

大共享时代系列_021_远端桌面软件(远端连线)

虽然不能进行人与人的连结 但我们可以进行装置与装置的连结~(^ω^)人(^ω^) 爲什麽要让你连进我...

Day-27 Memory Management

Memory Management tags: IT铁人 虽然我们在前面的计算机结构也有讲过Memo...

Day19-Kubernetes 那些事 - Stateless 与 Stateful

前言 今天来稍微讲点轻松的内容,但同时也是 K8s 中非常重要的一个观念,从这篇文章开始都会是 Po...