gpt4 book ai didi

python - 在容器内运行 Docker 脚本应用程序

转载 作者:可可西里 更新时间:2023-11-01 11:18:09 24 4
gpt4 key购买 nike

我是 Docker 和容器的新手 - 我有一个 Python 3 脚本,它根据命令行参数从网站提取数据并打印结果。如果没有可用的网络连接,它会使用 Redis 来缓存数据。我的 Dockerfile 看起来像这样

FROM ubuntu:latest
RUN apt-get update -y && apt-get -y install redis-server && apt-get install -y python3-pip python3.5-dev build-essential
COPY . /app
WORKDIR /app
RUN pip3 install -r requirements.txt
ENTRYPOINT ["python3"]
CMD ["pn.py"]

我能够构建图像,但是当我启动容器时,它可能会运行 Python 命令以在容器内运行脚本并退出,因此我无法从主机看到结果。

脚本需要命令行输入,否则会失败。如何将这些指定为我可以用来从主机运行脚本的单个 Docker 运行命令的一部分?

或者,如何在不调用脚本的情况下启动容器,而是在运行的容器中手动运行脚本?

最佳答案

这取决于你想对结果做什么。

假设如下:

  • ENTRYPOINT 行告诉图像在您启动容器时应该执行什么。那将是 PID 1
  • 当该行存在时,CMD 内容将用作 ENTRYPOINT 的参数。
  • docker 容器总是在其主要任务 (PID 1) 退出时退出。

基本上,您的 docker 正在执行它被告知要做的事情。如果您希望它继续运行,您应该提供一个不会以 ENTRYPOINTCMD 退出的任务(如果 ENTRYPOINT 不存在) .

要在 shell 模式下手动启动容器并查看会发生什么,您可以按以下方式运行它:

docker run -ti [OPTIONS] [CONTAINER_NAME] bash

然后您将在一个 shell 中“进入”容器,因此您可以手动运行脚本:

#~ python3 pn.py

关于python - 在容器内运行 Docker 脚本应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41877802/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com