カクカクしかじか

技術的なアレコレ

Docker環境のRailsアプリでbootstrapに関わるnode.jsのコンパイルに失敗する問題の解決法

前提

現在、 現場Rails のタスク管理アプリをDocker環境かつMongoDBに置き換えて作っている状況です!(現場RailsChapter3 の部分に該当)
本の中のChapter3のbootstrapを入れて動かす部分で動作確認をしていると Autoprefixer doesn’t support Node v4.8.2. Update it. というエラーが出ました。
要するにnodeのバージョンを上げろということっぽい?

環境

Docker for Mac
Ruby 2.5.1
Rails 5.2.2.1
mongodb 4.0.6

エラー内容

コンソール

web_1  | ActionView::Template::Error (Autoprefixer doesn’t support Node v4.8.2. Update it.):
web_1  |      5:       | App
web_1  |      6:     = csrf_meta_tags
web_1  |      7:     = csp_meta_tag
web_1  |      8:     = stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track': 'reload'
web_1  |      9:     = javascript_include_tag 'application', 'data-turbolinks-track': 'reload'
web_1  |     10:   body
web_1  |     11:   .app-title.navbar.navbar-expand-md.navbar-light.bg-light
web_1  |
web_1  | app/views/layouts/application.html.slim:8:in `_app_views_layouts_application_html_slim___2939851707779148021_70105915345900'

画面上

image.png

解決法

Dockerfileでコンテナにインストールするnodeの記載方法を変えた! こちらのissueに解決に関する記載がありました。

github.com

Dockerfileの記載法を変える

変更前

FROM ruby:2.5.1
RUN apt-get update -qq && apt-get install -y build-essential nodejs
RUN mkdir /app
WORKDIR /app
COPY Gemfile /app/Gemfile
COPY Gemfile.lock /app/Gemfile.lock
RUN gem install bundler
RUN bundle install
COPY . /app

変更後

FROM ruby:2.5.1
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - \
    && apt-get install -y nodejs
RUN mkdir /app
WORKDIR /app
COPY Gemfile /app/Gemfile
COPY Gemfile.lock /app/Gemfile.lock
RUN gem install bundler
RUN bundle install
COPY . /app

結果

画面が無事に表示されました!!

image.png

参考記事

qiita.com