是否可以向 docker 容器传递自定义环境变量?

一些客户端库(例如 GitHub - googleapis/google-auth-library-ruby: Google Auth Library for Ruby · GitHub yml 文件传递它们?

我尝试了以下方法:

  1. yml 文件的自定义命令部分添加 export VAR=VALUE
  2. yml 文件的 env 部分添加 VARIABLE: VALUE

@merefield 向我指出这确实是可行的。

在自定义命令部分执行以下操作:

# 将变量添加到 .bashrc 文件
exec: echo 'export VAR=value' >> ~/.bashrc
...
# 重新加载文件
exec: source ~/.bashrc

我可以确认这种方法确实有效。:slight_smile:

附注:
不知为何,source ~/.bashrc 并未更新环境变量。可能是调用得太早了。

也尝试过:
- exec: /bin/bash -c "source ~/.bashrc"

难道不能用容器定义的 env: 部分来实现吗?这样应该能创建一个 Rails 应用可以访问的环境变量。

就像这样:

env:
  CUSTOM_ENV: "value"

否则,看起来 pups 已经代为主机注入了环境变量 了。

这会导致一个与 Docker 相关的错误。如果它能那样工作,那将非常直观。:slight_smile: 或者是我搞错了。我想应该有一条规则,允许以 DISCOURSE_ 开头的自定义变量。

我明天一到办公桌前就再试一次那个环境变量设置。

所以,我之前想多了。这其实没问题。问题出在换行值上。我把它移除后,构建就成功了。但问题是,该如何使用换行值呢?

太棒了,我成功解决了!问题在于我将 RSA 私钥作为环境变量使用。要让这生效,需要这样做:

将密钥用单引号 '' 包裹起来,并在密钥中所有的 \n 前额外添加一个 \。例如,\n 应变为 \\n

顺便提一下,有更简单的方法来实现这一点,而不是直接更新所有的 \n。

例如:

key: |
  ---BEGIN SECRET KEY---
  SHH 不要读,这是机密
  ---END SECRET KEY---

您的意思是直接粘贴密钥的中间部分吗?这样会更简洁一些。

我的意思是,YML 从 | 字符开始支持多行(以及可选的变体)

然后你可以直接粘贴键名,无需任何修改(除了前导空格)。

我试了个傻办法:我用 | 和一个实际换行符替换了每个 \n,但这样行不通。