はじめに
DockerでRails開発を行っていたら急に下記のエラーが発生して、アプリが開けなくなった。
まず、エラー文を見てみると「Autoprefixer doesn’t support Node v4.8.2. Update it.」と書かれており、翻訳すると「AutoprefixerがNode v4.8.2に対応していません。アップデートしてください。」とのこと。
Node.jsのバージョンを下記コマンドを実行して確認してみると、エラー文のとおりv4.8.2らしい。
docker-compose run app nodejs -v
v4.8.2
原因
調べているとBootstrapが原因であることがわかった。Bootstrapのソースコードでは、ベンダープレフィックスを意図的に記載せず全てAutoprefixerというモジュールに任せており、このモジュールがNode.jsのバージョンv.4.8.2を受け付けないとのこと。
原因がわかればあとは対処するだけ!
コンテナにあるNode.jsのバージョンを変更すれば解決するはず...
対処法
Railsコンテナを構成しているOSがdebian Linuxであり、そのdebianのパッケージ管理コマンド「apt」のapt-getコマンドで使用されるリポジトリ(ソフトウェアの取得元)を追加すればおk。
Dockerfileに記載しているNode.jsのapt-getの前に、バージョン10系のNode.jsリポジトリを追加する。
Dockerfile
+ RUN curl -sL https://deb.nodesource.com/setup_10.x | bash -
RUN apt-get update -qq && \
apt-get install - y build-essential \
libpq-dev \
nodejs
これでバージョン10系のNode.jsがインストールされるようになった。
コンテナが動いていれば止めて、キャッシュを使わずに再ビルドを行ってから起動すればおk。
docker-compose stop
docker-compose build --no-cache
docker-compose up -d
最後に
めでたしめでたし。