Skip to content

Instantly share code, notes, and snippets.

@yano3nora
Last active March 13, 2023 12:22
Show Gist options
  • Save yano3nora/d960e2654e273e9f65b9b5ed9e694ae0 to your computer and use it in GitHub Desktop.
Save yano3nora/d960e2654e273e9f65b9b5ed9e694ae0 to your computer and use it in GitHub Desktop.
[dev: Docker node image] #docker #node

https://blog.shinonome.io/nodejs-docker/

FROM node:16.14.0

EXPOSE 3000

# node コンテナでは node user がセットされている
# セキュリティ的に root を使うべきでないのと
# wsl 環境などで root だと権限エラーになるので
# node user が権限を持つ /home/node 配下を使う
WORKDIR /home/node/app

COPY --chown=node:node package*.json ./
RUN npm ci
COPY --chown=node:node . ./

# next で build 時に inline 化する
# NEXT_PUBLIC_ 環境変数を列挙とか
ARG NEXT_PUBLIC_APP_URL

# prisma とか使うならこのへんで generate
RUN npx prisma generate

RUN npm run build

USER node

# この方式の場合は node ユーザなので 80 など
# well known port は権限絡みで listen できないため
# 予め web server 80 => web app 3000 受け構成を組む必要ある
CMD ["npm", "start"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment