代码之家  ›  专栏  ›  技术社区  ›  Asdrubal sameera207

利用Docker对AWS弹性Beanstalk进行资产预编译

  •  1
  • Asdrubal sameera207  · 技术社区  · 6 年前

    我在Docker上运行一个Rails(4.2.10)应用程序,运行在64位AmazonLinux/2.12.6上。应用程序正在成功运行,但是资产管道没有成功运行。奇怪的是,我没有收到任何我能看到的错误信息。

    此外,app/public/assets中还有资产

    例如,此.css文件存在:

    <link rel="stylesheet" media="all" href="assets/application-e627105c73433d07311d93ea3e4f53942589150887a45432397a6b1e80017a2e.css">
    

    Dockerfile:

    FROM ruby:2.4.2
    
    ENV APP_HOME /app
    ENV RAILS_ENV production
    ENV RACK_ENV production
    ENV SECRET_KEY_BASE 39c3bae00bf53ba9e3...
    
    RUN apt-get update -qq && apt-get install -y --no-install-recommends build-essential
    RUN apt-get install -y mysql-client
    RUN apt-get install -y libxml2-dev libxslt1-dev
    RUN apt-get install -y libqtwebkit4 libqt4-dev xvfb
    RUN apt-get install -y nodejs
    RUN apt-get clean autoclean \
      && apt-get autoremove -y \
      && rm -rf \
        /var/lib/apt \
        /var/lib/dpkg \
        /var/lib/cache \
        /var/lib/log
    
    RUN mkdir $APP_HOME
    RUN mkdir $APP_HOME/tmp
    WORKDIR $APP_HOME
    
    ADD Gemfile* $APP_HOME/
    RUN (bundle check || bundle install --without development test)
    
    ADD . $APP_HOME
    
    # NOTE: handles migrations (or db:setup if needed)
    ENTRYPOINT ["sh", "script/docker/entrypoint.sh"]
    
    RUN bundle exec rake assets:precompile --trace
    VOLUME /app/public
    
    EXPOSE 3000
    
    CMD ["script/rails", "s", "-b", "0.0.0.0"]
    

    如果您需要进一步解释或想看其他东西,请告诉我。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Berkhan Berkdemir    6 年前

    你需要添加 config.public_file_server.enabled = true 在你 config/environments/production.rb 或者您可以使用类似 that .

    但是,您可能希望在Ruby应用程序服务器前面运行一个Web服务器,因此您需要检查 反向代理 .