Dockerfileの基本構成
FROM node:22-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["node", "server.js"]
.dockerignoreファイル
node_modules
dist
.env
.git
*.log
イメージをビルドして実行
docker build -t myapp .
docker run -d -p 3000:3000 myapp
ハマったポイント
COPY package*.json ./してからRUN npm ciを分けるとキャッシュが効く.dockerignoreがないとnode_modulesがコピーされてイメージが巨大になる