gpt4 book ai didi

docker - 使用自定义 shell 脚本作为 docker 入口点

转载 作者:行者123 更新时间:2023-12-02 23:21:24 27 4
gpt4 key购买 nike

我正在尝试使用 docker-compose 来启动一个容器。作为一个ENTRYPOINT,该容器有一个我编写的简单的 bash 脚本。现在,当我尝试通过以下任何方式启动容器时:

  • docker-compose up
  • docker-compose up foo

它没有完成。即,尝试将(docker exec -i -t $1/bin/bash)附加到正在运行的容器,失败并显示:

Error response from daemon: Container xyz is restarting, wait until the container is running.

我尝试将命令放在后台。那不起作用。

my-script.sh

cmd1 &
cmd2 &&
...
cmdn &

我还尝试过使用和不使用入口点:/bin/sh/usr/local/bin/my-script.shii) 带或不带 tty: true 选项。没有骰子。

docker-compose.yml

version: '2'
services:
foo:
build:
context: .
dockerfile: Dockerfile.foo
...
tty: true
entrypoint: /bin/sh /usr/local/bin/my-script.sh

还尝试了手动 docker 构建/运行周期。并且(无需在 ENTRYPOINT 中启动 /bin/sh )运行就会退出。

$ docker build ... .
$ docker run -it ...
... shell echos commands here, then exits
$

我确信这很简单。这里有什么解决办法呢?

最佳答案

您的docker-compose.yml中的入口点只需

entrypoint: /usr/local/bin/my-script.sh

只需添加#!/bin/sh 到脚本顶部以指定要使用的 shell。

您还需要将 exec "$@" 添加到入口点脚本的底部,否则它将立即退出,从而终止容器。

关于docker - 使用自定义 shell 脚本作为 docker 入口点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42922079/

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