docker - Dockerfile 中带有双星号的环境变量

标签 docker environment-variables dockerfile

我注意到在某些 Dockerfile 中,环境变量是使用特定表达式指定的,这些表达式执行某种变量替换,例如:

ENV PASSWORD **Random**
ENV NAME **False**

我在 Docker 官方文档中找不到对这些表达式的任何引用。

我在哪里可以找到可以在 Dockerfile 中使用的可能表达式列表以及它们的含义是什么?

最佳答案

将这些变量用作模板变量是非官方约定。它们将在运行时被替换。

或者您可以使用 -e 替换它们docker run的开关.

例如:

ENV MYSQL_USER admin
ENV MYSQL_PASS **Random**

# Replication ENV
ENV REPLICATION_MASTER **False**
ENV REPLICATION_SLAVE **False**

如果您查看启动脚本,您可以看到以下内容:
if [ "$MYSQL_PASS" = "**Random**" ]; then
    unset MYSQL_PASS
fi

PASS=${MYSQL_PASS:-$(pwgen -s 12 1)}

如果变量值为 **Random**让我们用随机生成的密码替换它。

关于docker - Dockerfile 中带有双星号的环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29718483/

相关文章:

mysql - 无法使用非 root 用户运行 mariadb 镜像的 docker 容器

ubuntu - 如何从 Dockerfile 向 `sudo` 发送密码

Dockerfile:在仅将所需的文件复制到镜像之前,如何构建我的项目?

bash - 如何通过golang获取环境变量PS1?

javascript - 当字段名称包含 @ 字符时,如何从 JSON 响应中提取数据

Docker - 镜像操作系统 "windows"无法在此平台上使用

Docker 容器无法连接到链接的容器服务

node.js - 使用 unix 套接字连接 docker websocket

ruby-on-rails - 因为出现部署错误,所以我想做点什么

python - 设置python调用bash脚本的环境变量