首先,我们可以先拉一下底层的image,再把我们的app内容叠上去,从终端机(cmd)打上:
docker pull python
成功的话,可以在介面上看到新的image
再来,我们可以开始写dockerfile(可以放在主程序的旁边):
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>
对内port为3000,对外为5000,我们可以从localhost:3000来看到我们的服务。
<<: JavaFX+SceneBuliider+jfoneix +eclipse 安装
延续上一篇的话题 这篇文章要来讲当 C 语言中的 function 需要 6 个以上的参数时(虽然这...
虽然标题有点耸动,但在这个行动装置越来越多的现在,如果没有手机版的网页,SEO 排名会大受影响,也...
虽然不能进行人与人的连结 但我们可以进行装置与装置的连结~(^ω^)人(^ω^) 爲什麽要让你连进我...
Memory Management tags: IT铁人 虽然我们在前面的计算机结构也有讲过Memo...
前言 今天来稍微讲点轻松的内容,但同时也是 K8s 中非常重要的一个观念,从这篇文章开始都会是 Po...