🐳

Docker で Next.js 14 のテンプレートを構築してみた

2024/01/13に公開

はじめに

  • この記事では、Next.js 14 が動作するテンプレートを Docker で構築する方法について説明します。

GitHub

Dockerfile

https://github.com/0machi/nextjs-docker-template/blob/41fea5c723187a42f3465ff35f397efcd12981e7/dev.Dockerfile#L1-L16

Compose ファイル

  • 全容

https://github.com/0machi/nextjs-docker-template/blob/31d28cd33085ce1f84ce66799c4957e0a47f854b/docker-compose.dev.yml#L1-L23

  • 下記を参考に、bind mount の構文には、long syntax を使用しています。
    • node_modules の bind mount に対しても long syntax を使用しているため、起動時には、node_modules が存在せず、エラーになります。
      • そのため、後述する MakeFile で、docker comose build 実行時に、$ mkdir -p node_modules を実行するようにしました。

https://zenn.dev/sarisia/articles/0c1db052d09921#fn-bf4c-1

https://github.com/0machi/nextjs-docker-template/blob/main/docker-compose.dev.yml#L9-L15

  • 下記を参考に、node_modules については、コンテナ内の node_modules を保持するために、volume を用いて永続化させています。

https://github.com/0machi/nextjs-docker-template/blob/main/docker-compose.dev.yml#L22-L23

https://qiita.com/P-man_Brown/items/c2a69d943853cb381fbe

  • ホットリロードの有効化

https://github.com/0machi/nextjs-docker-template/blob/main/docker-compose.dev.yml#L16-L17

起動方法

  • 下記の MakeFile より、$ make init によって起動することができます。

https://github.com/0machi/nextjs-docker-template/blob/41fea5c723187a42f3465ff35f397efcd12981e7/Makefile#L1-L33

  • 下記を参考に、git clone 後、初回起動時の sh: xxx: not found エラーを解決するために、下記のように依存パッケージをインストールようにしました。

https://github.com/0machi/nextjs-docker-template/blob/41fea5c723187a42f3465ff35f397efcd12981e7/Makefile#L25-L26

https://zenn.dev/ttani/articles/docker-clone-first-operation

Linter、Formatter の設定

  • 下記を参考に設定を適用しました。

https://zenn.dev/siakas/articles/05481bdefacd13

おわりに

  • この記事では、Next.js 14 が動作するテンプレートを Docker で構築する方法について説明しました。
    • これから Next.js を触れる人の参考になればと思います。
shinaps テックブログ

Discussion