読者コミュニティ|Rails × CloudFormation ハンズオン
本の感想や質問をお気軽にコメントしてください。
素晴らしいハンズオンでとても勉強になりました。
本当にありがとうございます。
ご紹介されている中で一部そのままでは正常に動作しなかった箇所を共有いたします。
Railsアプリのセットアップの章にてrubyのイメージのdockerfileを作成してdocker-compose buildをしていまうすが、掲載のdockerfileですと、おそらくm1macの場合nokogiriが読み込まれずにエラーになります。
rake aborted!
LoadError: cannot load such file -- nokogiri/nokogiri
こちらを解消するにあたって、
&& bundle config set force_ruby_platform true \
の記述をRUNコマンドの中に入れる必要があるようです。
また、nokogiri gemのインストールをgemファイルに記載する必要があるかもしれません
こちらのサイトが参考になりました
ECS/ALBの章にて、cfn-ecsのcreae-stackのところで、コンテナが起動するプロセスでエラーになりました。
exec /app/entrypoint.sh: exec format error
こちらもm1macの場合のみと思われますが、docker buildのときにplatformの指定をしておかないといけないようです。
うまくいったコマンドは次のものになりました。
docker build --platform linux/amd64 -f deploy/development/Dockerfile -t cfn-sample-dev
こちらのサイトが参考になりました。
CodeDeply/GitHubActionsの章にてgithub actionsから上げてコードデプロイをかけたときにタスクの実行でエラーになり、aws上でコンテナが起動せずにエラーになりました。
No such file or directory @ realpath_rec - /app/tmp/sockets
tmp/socketsがgitignoreされている関係でgithub actionsでbuildされたソースコードにtmp/socketsがないため起きているとおもわれます。
deploy/Dockerfileの方に
RUN mkdir -p tmp/sockets
RUN mkdir -p tmp/pids
VOLUME /myapp/public
VOLUME /myapp/tmp
の記載が必要と思われます。
こちらのサイトが参考になりました。
また、こちらは当たり前のことですが、s3のバケット名はグローバルにユニークである必要があるので、Networkの章にて
aws s3 mb s3://cfn-sample-templates
を素直に実行するとすでに取られているバケット名として、エラーになります。
s3のバケット名がグローバルにユニークである必要があることと、以降のs3バケット名の指定にはこのときに各自で指定したバケット名をしっかり入れてあげる必要があることを記載していただく方が、より初心者の方でも最後までハンズオンを完走しやすくなるかと思われます。