はじめに
Docker+Ruby on Rails でアプリケーションを作り、AWSのEC2上にデプロイする際、
プリコンパイルしたファイルが見つからなくて苦労した。そこで調査したことをメモします。
アセットプリコンパイル
production環境では処理速度に対する影響を防ぐために自動でコンパイルされない。
そのため、事前にアセットプリコンパイルしなければならない。
$ docker-compose run app assets:precompile
上記のコマンドを実行するとpublicコマンドにassetsディレクトリが作成され、プリコンパイルされたファイルが格納される。
しかし、publicディレクトリを確認してもassetsファイルがないという現象がおきました。
原因
コンテナ内でプリコンパイルしていたため、ホスト側にファイルを確認できなかった。
解決方法
1 dockerコンテナからホスト側にコピーする
docker cp [コンテナID]:[コピーしたいファイルパス] [ローカルにコピーしたいパス]
2 ホスト側でassets:precompileを実行する。
bin/rails assets:precompile
参照