Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SB02 Official Solution #4

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions SB02-docker-build/repo/.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Commmon
**/.git
**/.gitignore
**/README.md
**/.idea
**/.vscode
**/*.log

# NodeJs Specific
**/node_modules

# Project Specific
.next
33 changes: 26 additions & 7 deletions SB02-docker-build/repo/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,18 +1,37 @@
FROM node:12
# Use a more specific version for your production containers can help resolve issues
FROM node:12.18.1-alpine3.12 as FirstStage

# Create app directory
WORKDIR /usr/src/app

# Installing dependencies
COPY package*.json ./
COPY package.json yarn.lock ./

RUN npm install
# Should use same package management as same as your development workflow
# The dependencies lock file is critical for reproduce to same behaviour
RUN yarn install --frozen-lockfile

# Copying Assets files
COPY public ./public

# Copying source files
COPY . .
COPY pages ./pages

# 1. Building app
# 2. Remove Dev Dependencies
RUN yarn build \
Copy link

@cyljacky cyljacky Jul 14, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yarn build 應該係唔 work 既command?
應該係 yarn run build 先啱?

sorry, 啱啱睇番document發現佢會自己做番 alias yarn build = yarn run build

但係想問番另一樣:
yarn install --frozen-lockfile
同埋
yarn install --production --frozen-lockfile --offline
分開行有無咩原因?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

通常行 build 時都必定要有 devDependencies,例如 babel, webpack

yarn install --frozen-lockfile

就會裝埋 devDependencies

之後再行

yarn install --production --frozen-lockfile --offline

就會 remove 所有 devDependencies

詳細解釋可以參考呢度 https://gaplo.tech/sb02-docker-build-solution/

&& yarn install --production --frozen-lockfile --offline

# Final Stage
FROM node:12.18.1-alpine3.12

WORKDIR /usr/src/app

# Copy all files from builder
COPY --from=FirstStage /usr/src/app /usr/src/app

# Building app
RUN npm run build
# This don't actually publish the port but to give better documentation to your DevOps colleagues
EXPOSE 3000

# Running the app
CMD [ "npm", "start" ]
CMD [ "yarn", "start" ]