在Windows Docker CE中通过批处理文件同时运行三个Python脚本容器
解决方案:批量启动三个Python脚本容器的批处理文件
没问题,我来帮你搞定这个批量启动容器的需求!下面分两步来实现:
第一步:提前构建好三个Docker镜像
首先你得确保三个Dockerfile对应的镜像已经构建完成。假设你的三个Dockerfile分别放在名为docker1、docker2、docker3的独立文件夹里(每个文件夹里放对应的Dockerfile、脚本和输入文件),打开命令提示符,分别执行以下命令构建镜像:
# 构建第一个容器的镜像,命名为python-script-1 docker build -t python-script-1 ./docker1 # 构建第二个容器的镜像,命名为python-script-2 docker build -t python-script-2 ./docker2 # 构建第三个容器的镜像,命名为python-script-3 docker build -t python-script-3 ./docker3
镜像名字可以根据你的喜好自定义,只要后面批处理里对应上就行。
第二步:编写批处理脚本(start_scripts.bat)
创建一个名为start_scripts.bat的文件,把下面的内容复制进去:
@echo off echo 正在启动三个Python脚本容器... # 启动第一个容器,--rm表示运行结束后自动删除容器,避免残留 docker run --rm --name script-container-1 python-script-1 # 启动第二个容器 docker run --rm --name script-container-2 python-script-2 # 启动第三个容器 docker run --rm --name script-container-3 python-script-3 echo 所有容器已启动完成! pause
可选优化:后台运行容器
如果你不想让命令提示符被阻塞(每个容器运行完才会启动下一个),可以给docker run加上-d参数让容器在后台运行,修改后的命令如下:
@echo off echo 正在后台启动三个Python脚本容器... docker run -d --rm --name script-container-1 python-script-1 docker run -d --rm --name script-container-2 python-script-2 docker run -d --rm --name script-container-3 python-script-3 echo 所有容器已后台启动完成! echo 可以用 `docker logs script-container-1` 查看第一个容器的运行日志 pause
额外小建议
如果你的输入文件需要经常修改,建议不要把文件COPY到镜像里,而是用Docker卷挂载的方式,这样修改输入文件后不需要重新构建镜像。比如第一个容器可以改成:
docker run --rm --name script-container-1 -v %cd%\docker1\input.csv:/input.csv python-script-1 python ./script.py /input.csv
这样你修改本地的input.csv后直接启动容器就能用最新的文件,不用重复构建镜像。
内容的提问来源于stack exchange,提问作者K.S




