【发布时间】:2021-11-15 12:59:33
【问题描述】:
我有一个 dockerfile
FROM python:3
WORKDIR /app
ADD ./venv ./venv
ADD ./data/file1.csv.gz ./data/file1.csv.gz
ADD ./data/file2.csv.gz ./data/file2.csv.gz
ADD ./requirements.txt ./venv/requirements.txt
WORKDIR /app/venv
RUN pip install --no-cache-dir -r requirements.txt
CMD ["python", "./src/script.py", "/app/data/file1.csv.gz", "/app/data/file2.csv.gz"]
从它构建映像并运行它后,该映像会按应有的方式运行应用程序,但容器在完成后会立即关闭。这肯定是有问题的,因为我不能指望输出文件。
我曾尝试使用 docker run -d -t <imgname> 和 docker ps 显示应用程序几秒钟,但又一次,一旦完成该过程,容器就会自行关闭。
因此无法访问,即使使用docker exec <imgid> -it --entrypoint /bin/bash,它也会立即退出。
我也尝试在最后一个 CMD 之后添加最后一个 RUN /bin/bash,但它也无济于事。
我能做些什么才能真正登录到容器并检查文件?
【问题讨论】:
-
一个容器在前台进程退出时退出:事情就是这样。如果你想让一个容器继续运行,你需要安排一个命令保持运行。您可以在 Python 脚本的末尾添加一个循环,或者使用
sleep inf或其他内容跟进它,但这需要成为您的CMD的一部分。RUN语句在运行时不执行任何操作(它们仅在 build 时生效)。 -
脚本是否终止或像服务一样运行?如果您需要一个输出文件,最好挂载一个目录。
标签: python docker docker-container docker-run docker-exec