docker - ENTRYPOINT 脚本变量
问题描述
我正在研究在运行时将变量分配给入口点脚本。我正在对我们的一个内部应用程序进行 dockerizing。在我的 ENTRYPOINT 脚本中,我定义了一些逻辑来创建一个包含 DB 用户名和密码的 database.php 文件。我想运行类似于以下内容的内容。如何定义DB_USERNAME
和DB_PASSWORD
作为运行时读取的值?
docker run -d --name some-app -e DB_USERNAME=secret_username -e DB_PASSWORD=securepassword
解决方案
诀窍是确保您使用( 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
推荐阅读
- regex - 在Scala中给定索引后的字符串中查找正则表达式匹配
- ios - Firebase SDK 崩溃
- python-2.7 - 条件参数的特定值的强制性子参数-Python 2.7
- wolfram-mathematica - 将 TimeSeriesAggregate 与日历月对齐
- node.js - 更改 npm 包上的标签:注册表在 https://registry.npmjs.com/-/package/path-protocol-test/dist-tags/latest 上为 PUT 返回 400
- json - 为什么我的代码将已排序的 JSON 文件解析为未排序的列表?| 哈斯克尔和埃森
- sql - 如何将获取日期转换为 yyyymmdd 格式?
- aws-lambda - AWS Lambda,Puppeteer,函数永远不会退出
- c# - Autofac:在解析时创建命名范围
- java - 是否有不同安装产生的版本输出列表?