首页 > 解决方案 > ENTRYPOINT 脚本变量

问题描述

我正在研究在运行时将变量分配给入口点脚本。我正在对我们的一个内部应用程序进行 dockerizing。在我的 ENTRYPOINT 脚本中,我定义了一些逻辑来创建一个包含 DB 用户名和密码的 database.php 文件。我想运行类似于以下内容的内容。如何定义DB_USERNAMEDB_PASSWORD作为运行时读取的值?

docker run -d --name some-app -e DB_USERNAME=secret_username -e DB_PASSWORD=securepassword

标签: dockerdockerfiledocker-entrypoint

解决方案


诀窍是确保您使用( preferably)的shell 形式ENTRYPOINT

FROM busybox

ENTRYPOINT echo "Hello ${DOG}"

然后:

docker build --rm --file="Dockerfile" --tag58944222:latest .
docker run --interactive --tty --env=DOG=Freddie  58944222:latest

回报:

Hello Freddie

更新

不清楚为什么这被否决了。

希望这会有所帮助:

#!/bin/sh

echo "Hello ${DOG}"

和:

FROM busybox

ENV DOG=Henry

COPY ./test.sh .
RUN chmod +x ./test.sh

ENTRYPOINT ./test.sh

返回与以前相同的结果。ENV Dog=Henry向 Dockerfile 添加 用于提供默认值:

docker run --interactive --tty 58944222:latest
Hello Henry
docker run --interactive --tty --env=DOG=Freddie 58944222:latest
Hello Freddie

推荐阅读