容器启动时脚本:entrypoint.sh依次启动4个Python脚本

Docker 容器启动时,通过一个 entrypoint.sh 依次启动 4 个 Python 脚本。


1. 最基本的 entrypoint.sh 写法(顺序执行)

如果你希望 前一个执行完才执行下一个(阻塞式),可以这样:

1
2
3
4
5
6
7
#!/bin/sh
set -e

python3 src/log_system.py
python3 src/main_0.py
python3 src/project_longtail.py
python3 src/project_longtail.py

问题:

  • 如果前面的脚本不退出(例如服务常驻),后面的永远不会启动。
  • 这种模式一般不适合需要多个进程同时跑的情况。

2. 并行启动多个进程

更常见的是多个 Python 服务要同时运行

1
2
3
4
5
6
7
8
9
10
#!/bin/sh
set -e

python3 src/log_system.py &
python3 src/main_0.py &
python3 src/project_longtail.py &
python3 src/project_longtail.py &

# 等待所有后台任务
wait

解释:

  • & 表示后台运行,不阻塞后续启动。

  • wait 确保容器不会提前退出,直到所有进程结束。

  • 确保 entrypoint.sh 有执行权限:

1
chmod +x entrypoint.sh

3. Dockerfile配置

1
2
3
4
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh

ENTRYPOINT ["/entrypoint.sh"]