2018-02-01

Rails + Webpack + Headless Chrome in Dockerしたい

docker-compose upしてRailsとPostgreSQLとSpringとwebpack-dev-serverが動くようになった。

Railsが動くコンテナのDockerfile. だいぶ整理した。

FROM ruby:2.5.0

ENV LANG=C.UTF-8 \
    APP_HOME=/usr/src/app

RUN mkdir -p $APP_HOME
WORKDIR $APP_HOME

RUN curl -sL https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \
 && sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \
 && apt-get update -qq \
 && apt-get install -y \
    google-chrome-unstable \
    vim \
 && curl -sL 'https://deb.nodesource.com/setup_9.x  ' | bash - \
 && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
 && echo 'deb https://dl.yarnpkg.com/debian/ stable main' | tee /etc/apt/sources.list.d/yarn.list \
 && apt-get update -qq \
 && apt-get install -y \
    nodejs \
    yarn \
 && rm -rf /var/lib/apt/lists/* \
 && rm -rf /src/*.deb

ENV BUNDLE_GEMFILE=$APP_HOME/Gemfile \
    BUNDLE_JOBS=4

Composeファイル。volumesは優先順位ありそう。

volumes:
  - bundle_cache:/usr/local/bundle
  - node_modules_cache:/usr/src/app/node_modules
  - .:/usr/src/app

だとnode_modules_cacheにNodeのモジュールが保存されるが

volumes:
  - .:/usr/src/app
  - bundle_cache:/usr/local/bundle
  - node_modules_cache:/usr/src/app/node_modules

だとローカルのカレントディレクトリにモジュールが保存される。あとで裏取りする。

見事に次の記事で解決できる症状が出た。web-consoleをDockerで使うと起きるようだ。appコンテナがlocalhostじゃなくて0.0.0.0にバインドしているからか。

Railsで「Cannot render console from Allowed networks」と言われたら – Qiita

残るはテスト完走。JSのテストが重すぎてほぼフリーズしている。JSのテストを動かすときに立ち上がるPumaがlocalhostのランダムなポートで動くのに接続できてないとか?

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です