gpt4 book ai didi

ruby-on-rails - 使用 docker-compose 部署的 Rails, Assets 不工作

转载 作者:行者123 更新时间:2023-12-04 05:32:08 26 4
gpt4 key购买 nike

这是我关注的一篇非常有用的文章:

Docker for an Existing Rails Application

我被困在这个问题上了。该应用程序可以正常运行,可以从网上冲浪看到索引页面。但是索引页面看起来有线,看起来 scss 不起作用并且图像没有出现。

从 Chrome 控制台,我得到了这个:

enter image description here

我做了很多搜索,发现它可能是 assets:premcompile。我更改了 docker-compose.yml ,运行 docker-compose run app rake db: assets:precompile,甚至我复制了 public/assets/* 到容器,但运气不好。

主机:CentOS 7

任何想法都是好的。提前致谢。

docker-compose.yml

1 app:
2 build: .
3
4 env_file: .env.production
5
6 environment:
7 RAILS_ENV: $RAILS_ENV
8
9 links:
10 - db
11

14 expose:
15 - "3000"
16
17 db:
18 image: postgres:9.4.5
19
20 volumes:
21 - eshop-postgres:/var/lib/postgresql/data
22
23 web:
24 build: .
25
26 dockerfile: config/containers/Dockerfile-nginx
27
28 volumes:
29 - ./public:/var/www/eshop/public
30
31 links:
32 - app
33 ports:
34 - "80:80"

Docker文件

      2 FROM ruby:2.3.3-slim
12 RUN apt-get update -qq && apt-get install -y build-essential libpq-dev postgresql-client libsqlite3-dev nodejs vim
15 ENV RAILS_ROOT /var/www/myapp
18 RUN mkdir -p $RAILS_ROOT/tmp/pids
19
21 WORKDIR $RAILS_ROOT
22
26 COPY Gemfile Gemfile
27
28 COPY Gemfile.lock Gemfile.lock
29
31 RUN gem install bundler
32
34 RUN bundle install
35
37 COPY . .
38

39 - RUN RAILS_ENV=production bundle exec rake assets:precompile --trace~
40 - RUN bundle exec rake assets:precompile --trace~

40 + RUN bundle exec rake RAILS_ENV=$RAILS_ENV DATABASE_URL=postgresql://$POSTGRES_USER:$POSTGRES_PASSWORD@127.0.0.1/$POSTGRES_PRODUCTION_DB assets:precompile
41 + VOLUMES ["$RAILS_ROOT/public"]

46 + CMD [ "config/containers/app_cmd.sh" ]

配置/容器/Docker-nginx

      2 FROM nginx

12 RUN apt-get update -qq && apt-get -y install apache2-utils vim

15 ENV RAILS_ROOT /var/www/myapp

18 WORKDIR $RAILS_ROOT

21 RUN mkdir log

25 COPY public public/

28 COPY config/containers/nginx.conf /tmp/myapp.nginx

32 RUN envsubst '$RAILS_ROOT' < /tmp/myappv.nginx > /etc/nginx/conf.d/default.conf

35 CMD [ "nginx", "-g", "daemon off;" ]

更新:

我根据@bkunzi01 的建议做了一些更新。但运气不好。

Docker文件

 40 RUN bundle exec rake RAILS_ENV=$RAILS_ENV DATABASE_URL=postgresql://$POSTGRES_USER:$POSTGRES_PASSWORD@127.0.0.1/$POSTGRES_PRODUCTION_DB assets:precompile
41 VOLUME ["$RAILS_ROOT/public"]

46 CMD [ "config/containers/app_cmd.sh" ]

.env.production

# *.env.production*    

RAILS_ENV=production
RAILS_ROOT=/var/www/eshop
SECRET_KEY_BASE=the_long_code
POSTGRES_PRODUCTION_DB=production_db
POSTGRES_USER=postgres
POSTGRES_PASSWORD=keep_secret_ps

docker-compose的日志中还有一个[warn]:

web_1  | 2017/03/02 05:45:14 [warn] 1#1: server name "/var/www/eshop/public" has suspicious symbols in /etc/nginx/conf.d/default.conf:16
web_1 | nginx: [warn] server name "/var/www/eshop/public" has suspicious symbols in /etc/nginx/conf.d/default.conf:16

最佳答案

我遇到了完全相同的问题。事实证明,真正的原因是 config.public_file_server.enabled 没有在我的 config/environments/production.rb 中设置。

为了解决这个问题,我只是在我的 docker-compose.yml 中添加了一个环境变量:

version: '2'
services:
app:
...
environment:
- RAILS_SERVE_STATIC_FILES=true

我正在使用 Rails 5.0.1。

希望这对您有所帮助。

关于ruby-on-rails - 使用 docker-compose 部署的 Rails, Assets 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42537225/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com