我有一个Rails 6应用程序,其凭据在Docker本地运行。
为了在AWS ElasticBeanstalk上启动并运行它,我想预编译 Assets 作为Docker构建的一部分。但是,如this issue in the rails repo所述,我在rake assets:precompile上收到以下错误:
Missing encryption key to decrypt file with. Ask your team for your master key and write it to config/master.key or put it in the ENV['RAILS_MASTER_KEY'].
我已将RAILS_MASTER_KEY作为环境变量添加到EB环境中(配置>软件>修改),但是在Docker构建期间,它不会从那里读取Env变量。

允许Docker构建访问Env变量的最佳和最安全的方法是什么?我应该在部署之前运行assets:precompile吗?

在本地,我可以通过将Key作为build-arg传递给 Assets ,使其在生产模式下进行预编译(请参阅Dockerfile中我解析RAILS_MASTER_KEY参数并进行设置的部分),但是,这似乎不是生产的正确选择?或如果是的话,我应该如何去做?

我的Dockerfile:

FROM ruby:2.6.3-slim
ARG RAILS_MASTER_KEY

bla bla install yarn etc

RUN gem install bundler
#Install gems
RUN mkdir /gems
WORKDIR /gems
COPY Gemfile .
COPY Gemfile.lock .
RUN bundle install

ARG INSTALL_PATH=/opt/my_app
ENV INSTALL_PATH $INSTALL_PATH
ENV RAILS_MASTER_KEY $RAILS_MASTER_KEY
WORKDIR $INSTALL_PATH
COPY . .

RUN RAILS_ENV=production rake assets:precompile

最佳答案

您添加的主密钥可能不正确。检查config/master.key中的主密钥(在本地)。主密钥在本地和aws中必须相同。

另外,请确保您在AWS中添加了主密钥。进入控制台并使用ENV['RAILS_MASTER_KEY']打印主密钥。

关于ruby-on-rails - Rails 6 rake Assets :由于缺少Master Key Env变量而无法在AWS上使用Docker进行预编译失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58202309/

10-14 19:43
查看更多