首页 > 解决方案 > Docker:容器永久重启

问题描述

我是整个 Docker Container 主题的新手,目前正在尝试通过 bash 脚本在 shell 中运行多个 python 脚本(因为就同时运行多个 python 脚本而言,这似乎是最简单的事情)。在此之前,我通过以下 Dockerfile 构建我的图像

FROM debian:buster-slim

ENV PACKAGES1="build-essential git python3"

RUN apt-get update && \
    apt-get install -y $PACKAGES1 
    
COPY /mnt /mnt

CMD [ "/bin/bash", "/mnt/setup_bash.sh" ]

执行setup_bash.sh

#! /bin/bash

python3 script1.py & 
python3 script2.py &

运行生成的容器后,他不断重新启动并且不保持活动状态。同时该docker logs命令没有显示任何错误,所以我有点不知道是什么问题。

标签: pythonbashdockercontainers

解决方案


系统主进程退出,所以docker被杀死。您正在后台运行两个进程,并且主 bash 脚本退出。你可以:

  • 在前台运行一个脚本,或者
  • 运行sleep infinity以保持主脚本运行
  • 重构这一切,对于复杂的设置考虑使用服务管理,比如supervisord

与选项 2 一样:

#! /bin/bash
python3 script1.py & 
python3 script2.py &
sleep infinity  # don't quit

推荐阅读