使用环境变量创建 Dockerfile

Creating Dockerfile with Environmental Variables

我正在尝试创建一个 docker 图像,它将 运行 用户的命令。该命令将需要一些变量条目,特定于运行宁它的人。我尝试简单地使用变量创建它,但由于构建时命令不能 运行,因此该过程无法完成。然后我尝试使用“${varname:-possible value}”,我得到了更多。

我猜部分问题可能是某些变量是 URL,因为文件夹名称也是一个变量,正在被接受。我确实尝试将转义字符 ('\') 添加到 URL 中的所有特殊字符,但所做的只是给我一个 'bad substitution' 错误。

那么,我应该更改语法吗?

RUN /usr/bin/java -jar export.jar calendar \
    --output /var/www \
    --format public \
    --restUri ${one_uri:-http://my.site:8080/subdir/restservice} \
    --daysForward ${days_forward:-30}

我不太清楚您的用户是在构建他们自己的 Dockerfile 还是他们在直接使用您的 docker 图像,但如果他们创建了自己的图像,那么您可以使用 ONBUILD 来 运行 一个命令,当用户 docker build 他们的容器时。

https://docs.docker.com/reference/builder/#onbuild

其他

您可以像这样指定自己的默认值

ENV days_forward "30"

然后当他们 运行 你的容器时,他们可以很容易地覆盖那个环境变量。