ruby 如何在使用MRSK的Rails 7应用程序的Docker构建期间使环境变量可用?

7gyucuyw  于 2023-05-28  发布在  Ruby
关注(0)|答案(1)|浏览(150)

我正在尝试使用MRSK构建和部署一个rails 7应用程序。docker构建过程需要不同的环境变量来捆绑gem,安装yarn包等。
我的deploy.yml包含以下信息:

env:
  secret:
    - GITLAB_TOKEN

builder:
  secrets:
    - GITLAB_TOKEN
  args:
    RUBY_VERSION: 3.2.2
  multiarch: false

. env文件:

GITLAB_TOKEN='test'

在我的Dockerfile中,我尝试了以下操作:

RUN echo  "$GITLAB_TOKEN"

RUN --mount=type=secret,id=GITLAB_TOKEN
RUN cat /run/secrets/GITLAB_TOKEN

但在这两种情况下,环境都是空的。
我发现了一个解决方法,使用args代替deploy.yml中的环境:

builder:
  args:
    GITLAB_TOKEN: "<%= ENV['GITLAB_TOKEN'] %>"

但是args并没有被屏蔽,并且在yml文件中使用erb文本看起来非常丑陋。这也可能不适用于非轨道应用。

68de4m5k

68de4m5k1#

在你的Dockerfile中应该是这样的

RUN --mount=type=secret,id=GITLAB_TOKEN \
  GITLAB_TOKEN=$(cat /run/secrets/GITLAB_TOKEN) \
  bundle install # or any command you need

相关问题