gpt4 book ai didi

python - 启动 Docker 容器时自动运行 Python 脚本

转载 作者:行者123 更新时间:2023-11-30 23:04:42 42 4
gpt4 key购买 nike

是否可以在启动 Docker 容器时自动运行 python 脚本?

我附加到图像的命令是:

docker run -i -t --entrypoint /bin/bash myimage -s

有没有办法添加一个在启动脚本时运行脚本的附加命令?我不想使用 Dockerfile,因为我使用的一些 python 模块来自私有(private)存储库,需要手动下载,因此 Dockerfile 无法完全构建我想要的镜像。

最佳答案

事实上是有的。只是不要使用--entrypoint。相反:

docker run -it myimage /bin/bash -c /run.sh

显然,这假设图像本身在 /run.sh 位置包含一个简单的 Bash 脚本。

#!/bin/bash
command1
command2
command3
...

如果您不想这样做,您可以将当前文件夹挂载到正在运行的容器中并运行本地脚本:

docker run -it -v $(pwd):/mnt myimage /bin/bash -c /mnt/run.sh

ENTRYPOINTCMD 似乎是造成混淆的常见原因。

这样想:

  • ENTRYPOINT 是一种对特定行为进行硬编码的方法,该行为在设置后无法更改。
  • CMD 是提供要运行的命令的默认方式。

Docker 容器可以设置为作为独立应用程序运行。如果您愿意,您可以创建接受命令行参数(例如文件)的一次性容器,将其拉入,发挥其魔力并返回一个已处理的文件。有些人使用它来设置具有不同配置的构建环境,并按需运行它们,而不会使他们的主机变得困惑。

但是,您的使用场景感觉很乏味,因为您显然是手动进行设置。将下载凭据设置为environment variables会更容易。 ,像这样:

docker run -d -e "DEEP=purple" -e "LED=zeppelin" myimage /bin/bash -c /run.sh

然后您可以在脚本中使用它们作为占位符。这样,您就可以两全其美。为了增加安全性,您的 run.sh 应在使用环境变量后取消设置它们,如下所示:

#!/bin/bash
command1
command2
command3
...
unset DEEP
unset LED

关于python - 启动 Docker 容器时自动运行 Python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33565151/

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