Open2

読者コミュニティ|Rails × CloudFormation ハンズオン

yoshiyoshi

素晴らしいハンズオンでとても勉強になりました。
本当にありがとうございます。

ご紹介されている中で一部そのままでは正常に動作しなかった箇所を共有いたします。

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ファイルに記載する必要があるかもしれません
こちらのサイトが参考になりました
https://abillyz.com/watanabe/studies/244

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 

こちらのサイトが参考になりました。
https://qiita.com/OmeletteCurry19/items/fd057a7448aa3072fd1e

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

の記載が必要と思われます。
こちらのサイトが参考になりました。
https://zenn.dev/jinwatanabe/articles/c0ae66245d4fe46cea97

また、こちらは当たり前のことですが、s3のバケット名はグローバルにユニークである必要があるので、Networkの章にて

aws s3 mb s3://cfn-sample-templates

を素直に実行するとすでに取られているバケット名として、エラーになります。
s3のバケット名がグローバルにユニークである必要があることと、以降のs3バケット名の指定にはこのときに各自で指定したバケット名をしっかり入れてあげる必要があることを記載していただく方が、より初心者の方でも最後までハンズオンを完走しやすくなるかと思われます。