gpt4 book ai didi

入口点后 Docker 退出

转载 作者:行者123 更新时间:2023-12-02 19:00:42 28 4
gpt4 key购买 nike

我正在尝试为 s3cmd 编写一个 docker 镜像。当我通过 docker-compose 运行从 Dockerfile 构建的图像时,容器在 docker compose run 命令之前退出。

docker 文件

FROM alpine:latest

COPY ./.s3cfg /s3cmd_repo/.s3cfg.example
COPY entrypoint.sh /s3cmd_repo/

RUN chmod +x /s3cmd_repo/entrypoint.sh

ENTRYPOINT ["/s3cmd_repo/entrypoint.sh"]

入口点.sh

#!/bin/sh
echo "--- INITIALIZING SS# CONFIGURATIONS ---"
envsubst < /s3cmd_repo/.s3cfg.example > ~/.s3cfg
s3cmd ls
echo "=== END ==="

docker-compose.yml

version: '3'    
services:
execution:
image: s3
command: s3cmd ls

我也试过使用tail -f/etc/issue,容器没有退出,但是docker compose命令无法运行。

最佳答案

When I run the image built from the Dockerfile via docker-compose, the container exit before the command in docker compose run.

这是意料之中的。 docker compose 文件中的命令:s3cmd ls 附加到 s3' Dockerfile 的入口点。
所以类似的东西被执行了:

/s3cmd_repo/entrypoint.sh s3cmd ls

这两个参数在 sh 脚本执行期间被忽略。

要执行多个命令来启动容器,您不需要定义 ENTRYPOINT。而是指定要在 docker-compose 文件中运行的命令:

version: '3'    
services:
execution:
image: s3
command: sh -c "/s3cmd_repo/entrypoint.sh && s3cmd ls"

请注意,sh 可以在任何 Linux 发行版中使用,bash 则不能(例如 Alpine)。

关于入口点后 Docker 退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60463236/

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