菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
68
0

Docker 后台运行多个进程/脚本/web server

原创
05/13 14:22
阅读数 269738

标签:ram   sudo   问题   serve   使用   进程   sgi   信息   重启   

首先,并不推荐这样做,一个Docker本身只该运行一个服务

问题

有一次我需要在一个docker容器中运行两个web server。并且需要写在Dockerfile中,让用户一启动容器,两个web server就都运行。

如果在Dockerfile最后直接加一个RUN webrun.py的话,只能启动一个。

解决

使用supervisor

安装

使用sudo apt-get install supervisor 安装。

我的Dockerfile中使用的基础镜像是tiangolo/uwsgi-nginx-flask:python3.8已经安装好了。

编写apprun.conf文件

文件的内容如下

[program:apprun]
command=python webrun.py
autostart=true
autorestart=true
stdout_logfile=/app/app.log

第一行的apprun自己取个名字,表示你的项目就行
第二行的python webrun.py表示你运行程序的命令
第三行表示自动启动,如果值为false则表示不自动启动
第四行表示自动重启,如果值为false则表示不自动重启
最后一样表示程序打印出的信息都记录在该test.log文件内,是log文件

conf文件复制到镜像内

Dockerfile中添加如下命令,COPY ./apprun.conf /etc/supervisor/conf.d

启动

我使用的基础镜像tiangolo/uwsgi-nginx-flask:python3.8在容器启动时会自动启动supervisord。所以,如果使用这个镜像的话,无需其他的特殊操作。

如果是在一般的操作系统中,可以使用sudo supervisord来启动。

参考

https://blog.csdn.net/asukasmallriver/article/details/73822951
https://hub.docker.com/r/tiangolo/uwsgi-nginx-flask

Docker 后台运行多个进程/脚本/web server

发表评论

0/200
68 点赞
0 评论
收藏
为你推荐 换一批