Next.jsだけでブログ開発 環境構築編

なんでも雑多にアップできるブログサイトが欲しいなと思いつつ、1年が経過したので、

重い腰を上げてサクッと開発していこうと思う。

コンセプトとしては以下の3点

  • 使用技術含め、なるべくシンプルに
  • 記事追加もメンテナンスもCI/CDもGitHubを起点にしてデプロイまで行える
  • サーバーは不要(ランニングコストは0に近い方が望ましい)

この辺を踏まえると

Next.js(TypeScript)で開発し、GitHubで管理してActionsとVercelでCI/CDすればランニングコストも低く抑えることができる。

あとは自身のPC環境をなるべく汚したくないので、Dokcerで開発環境を構築すれば大体のやりたいことは叶えられるかな?と思い決定した。

ということでまずは開発環境を構築していこうと思う

開発環境構築

開発にしか使わないので、マルチステージビルドなど使用せずにシンプルな環境構築とする。

まずは開発ディレクトリを切って、

docker run --rm -it -v $(pwd):/app node:18-alpine sh

使い捨て用のコンテナを起動する。現在のディレクトリは先ほど切った開発ディレクトリとして、コンテナ内の/appディレクトリにマウントする。(こうすることでDockerコンテナ内のappディレクトリとローカルのディレクトリが同期されるようになる)

コンテナ内でNext.jsプロジェクトを作成

npx create-next-app@latest .

これで、ローカルにもファイルが同期されて、Dockerfileとcompose.ymlをかけるようになった

Dockerfileとdocker-compose.ymlの作成

現状は開発ディレクトリ内にNext.js関係のディレクトリやファイルが存在しているはず。ルートにdockerに関するファイルをローカルから作成する

pwd/dockerfile

FROM node:18-alpine
 
WORKDIR /app
 
COPY package*.json ./
RUN npm install
 
COPY . .
 
EXPOSE 3000
 
CMD ["npm", "run", "dev"]

pwd/docker-compose.yml

version: "3.8"
services:
  nextjs:
    build: .
    ports:
      - "3000:3000"
    volumes:
      - .:/app
      - /app/node_modules
    command: npm run dev

これで

docker compose up --build

コマンドを打てば、Next.jsがhttp://localhost:3000で立ち上がるようになる。

$yml = 'string';

開発環境編は以上です。