Rails7はHotwireに対応していたりなど、新しい機能が増えています。
viewがサーバー側に戻ってきたことは、新規サービスやPOC版などを作成するときには抜群に扱いやすいんじゃないかと思っています。
なので、今回はRails7をDocker alpine Linuxで動作するような環境を構築します。
具体的には、Dockerfileとそれに付随するファイルの作成です。
概要
Rails7 構築時の注意点
今回Railsで使用するrubyのバージョンはversion 3.0系を使用します。
2022/01時点では3.1が最新だったけどbundle installでコケるため調べたら現状では対応していなそう。
あと、Rails6系と違ってライブラリをとってくるときにgitを使用しているため、これまでのDockerfileだとエラーになってしまいました。たぶん依存先がまだ解決しきっていないような気がする。
pumaは4系から5系に上がっていて期待値が高い。
Rails7 用のDockerfile
Rails7用のDockerfileは下記。これを組み込めばとりあえず動作する環境をつくれる。Gemfile, Gemfile.lock, entrypoint.shは必要です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
FROM docker.io/ruby:3.0.3-alpine3.15 WORKDIR /app ENV TZ=Asia/Tokyo ENV RAILS_ENV=production COPY Gemfile . COPY Gemfile.lock . RUN apk update && \ apk add --no-cache yarn tzdata libxml2-dev curl-dev make gcc libc-dev g++ imagemagick6-dev sqlite-dev postgresql-dev vim git && \ bundle install && \ gem install foreman && \ mkdir log && \ touch log/production.log && \ chmod 777 log/production.log && \ rm -rf /usr/local/bundle/cache/* /usr/local/share/.cache/* /var/cache/* /tmp/* COPY . . RUN chmod +x entrypoint.sh ENTRYPOINT ./entrypoint.sh |
docker buildでok.
docker run時の環境変数について
起動時には環境変数RUN_MODEを渡してあげる必要があります。
RUN_MODE=NO で開発用の状態になります。
1 |
docker run -e "RUN_MODE=NO" |
Gemfile, Gemfile.lock, entrypoint.shについて
Gemfile, Gemfile.lock, entrypoint.shが必要って人がいれば、下記をとってきてください。
じゃあね〜〜〜。