1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Next.js 12(typescript)をDocker上で動かすための手順(色々詰まって悩んだ)

Last updated at Posted at 2021-12-26

Next.js 12(typescript)をDocker上で動かすための手順(色々詰まって悩んだ)

記事を書こうと思った経緯

Next.jsを使ったことなかったのですが、勉強のためにver.12からやってみたら、色々ハマったので、他の方で詰まった方がおられましたら、参考にしていただけたらと...
初心者の方でも、構築可能な様にしてます。
(すみません。不備あったので編集済みです....)

##目的
swcのエラーを解消して、Next.js 12をDocker上で動くようにする。

##対象
Next.js 12をDocker上で動かしたい方全員が対象
DokcerでNext.js12を使ってみたいけど、環境構築で挫折した方などなど...

##前提
Node v14.18.1が使える状態であること。
Dockerが使える状態であること。(Docker Desktopでも可)

##開発環境
OSはmac想定です。

環境 バージョン
macOS Monterey
Alphine 3.13
Node 14.18.1
Yarn 1.27
Rust 1.57
バージョンが違うと動かないことがあるので、注意

##フォルダ構成

next_demo/
 ├ environment
 │      └ docker-entrypoint.sh
 │      └ setup.sh
 ├ src
 │      └ next.jsのソース ← Next.jsをダウンロードしてください。
 ├ docker-compose.yaml 
 └ Dockerfile

##next.jsのダウンロード (わかる方はスキップOK)
1、next_demoの中に移動
2、yarn create next-app --typescript src を実行

##各ファイルの内容 (コピペどうぞ!)
・docker-compose.yaml

version: '3.7'
services:
  next12_demo:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: 'next12_demo'
    volumes:
      - ./src:/usr/src/app
    command: sh -c "sh /docker-entrypoint.sh && cd /usr/src/app && yarn next dev"
    ports:
      - "3001:3000"
    environment:
      TZ: 'Asia/Tokyo'

・Dockerfile

FROM rust:1.57.0-alpine3.13

COPY /environment /

RUN apk update && \
    apk add vim && \
    apk add nodejs npm && \
    npm install -g yarn && \
    chmod 755 /docker-entrypoint.sh && \
    chmod 755 /setup.sh

ENV HOST=0.0.0.0
EXPOSE 3000

※ちなみに、FROMの「rust:1.57.0-alpine3.13」を「node:14.18-alpine3.13」に変更して、
・ apk add nodejs npm &&
・ npm install -g yarn &&
をコメントアウトして実行しても動きますので、rustが必要ない方は、そちらでもOKです。

・docker-entrypoint.sh

#!/bin/sh

SETUP_FILE="/setup.sh"

if [ -e $SETUP_FILE ]; then
    sh setup.sh
    rm setup.sh
else
    echo "------- already run setup.sh -------"
fi

・setup.sh

#!/bin/sh
cd /usr/src/app

echo "------- next-swc-linux-x64-gnu install -------"
yarn add next-swc-linux-x64-gnu

起動コマンド

// docker-compose.ymlファイルのあるフォルダで実行
docker-compose up --build

// コンテナが問題なく動いたら、ブラウザで以下にアクセス
→ http://localhost:3001

イメージにrustを使用した理由

今回の構築では、imageにrustを使用しています。nodeで行ってみようとしたのですが、
以下の理由で、rust:1.57.0-alpine3.13を使用。

1、alpineでrustの環境構築がちょっとしんどかった。
2、alpineでの構築をやってみたかった
3、WebAssemblyの高速化を試してみようと思った。

注意

ちなみに、setup.shを実行せずに、nextを起動しようとすると、以下のようなエラーが発生するのでご注意を!

ready - started server on 0.0.0.0:3000, url: http://localhost:3000
error - Failed to load SWC binary, see more info here: https://nextjs.org/docs/messages/failed-loading-swc
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

まとめ

swcを無効にすることができるのは知っているのですが、今回はあえて無効にせずにできるか試してみました。
とりあえず、できるようになったが、もっといいやり方ある気がしてるので、最適解をご存知の方は、ご指摘いただけると嬉しいです。

不備がございましたら、それも、ご指摘いただけると嬉しいです。

では.....

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?