参考にさせていただいたページ
- Next.js(TypeScript) × Docker(Compose V2) 最速構築Tips. #初心者 - Qiita
- Next.js開発環境構築にdocker composeを使い倒した話
- Node.js Docker baseイメージには alpine < distroless < ubuntu+slim 構成がよさそう
参考にした過去記事
はじめに
久しぶりに触ったらコードも良くないし、Next.jsをはじめとして、色々とパッケージが古いのでディレクトリごと作成しなおします。
npx create-next-app@latest --ts する
frontendディレクトリが既にあるので、frontend_v2ディレクトリを作成します。
npx create-next-app@latest --ts frontend_v2
対話形式で選択できる初期設定は以下の通り選択しました。
frontend_v2/Dockerfileの作成とその記述内容
vim frontend_v2/Dockerfile
以下の通り記述しました。
# Debian の slim イメージを使う # - 色々入っている node は使わない # - alpine は使わない FROM node:20.12.2-bookworm-slim # 環境変数を定義 ENV APP_PATH /usr/src/app # docker-compose.yml の volumes に合わせて $APP_PATH ディレクトリを作成 RUN mkdir $APP_PATH # ホストマシンにある package.json をコンテナ内の $APP_PATH/package.json にコピー COPY package.json $APP_PATH/ # $APP_PATH ディレクトリでコマンド実行 WORKDIR $APP_PATH RUN npm install
docker-compose.ymlの編集とその記述内容
vim docker-compose.yml
以下の通りfrontendサービスの設定を変更します。
version: "3.9" services: https-portal: image: steveltn/https-portal:1 ports: - 10080:80 - 10443:443 restart: always environment: DOMAINS: 'localhost -> http://nginx:8000' STAGE: local volumes: - ./https_portal/ssl_certs:/var/lib/https-portal depends_on: - nginx nginx: build: ./nginx ports: - "18000:8000" volumes: - ./nginx/nginx.conf:/etc/nginx/nginx.conf - ./nginx/html:/var/www/html - ./nginx/log:/var/log depends_on: - frontend frontend: build: context: ./frontend_v2 tty: true volumes: - ./frontend_v2:/usr/src/app environment: - WATCHPACK_POLLING=true command: 'npm run dev' ports: - "3001:3001"
frontend_v2/package.jsonの編集とその記述内容
package.jsonのscripts.devを以下の通り編集します。
"scripts": { "dev": "next dev -p 3001", 〜略〜 },
ここまでやった段階でのfrontend_v2/package.jsonの記述内容は以下の通りです。
{ "name": "frontend_v2", "version": "0.1.0", "private": true, "scripts": { "dev": "next dev -p 3001", "build": "next build", "start": "next start", "lint": "next lint" }, "dependencies": { "react": "^18", "react-dom": "^18", "next": "14.2.0" }, "devDependencies": { "typescript": "^5", "@types/node": "^20", "@types/react": "^18", "@types/react-dom": "^18", "eslint": "^8", "eslint-config-next": "14.2.0" } }
docker-compose build する
一度buildしてみます。
docker-compose build
docker-compose up する
upしてみます。
docker-compose up
ブラウザでNext.jsのサーバーに直接アクセスして確認してみる
以下のURLにブラウザでアクセスすると、ページが表示されます。
- Next.jsのアプリケーション: http://localhost:3001/
ブラウザでhttps-portalサービスを介してアクセスしてみる
以下のURLにブラウザでアクセスすると、ページが表示されます。