Skip to content

Commit a7deb3b

Browse files
committed
build(docker): Update to refactor Dockerfile for multi-stage build and add nginx configuration
1 parent 88c9eca commit a7deb3b

File tree

2 files changed

+36
-21
lines changed

2 files changed

+36
-21
lines changed

Dockerfile

Lines changed: 10 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,15 @@
1-
FROM node:20-alpine AS dependencies-env
1+
# 建置階段
2+
FROM node:20-alpine AS build
23
RUN npm i -g pnpm
3-
COPY . /app
4-
5-
FROM dependencies-env AS development-dependencies-env
6-
COPY ./package.json pnpm-lock.yaml /app/
74
WORKDIR /app
5+
COPY package.json pnpm-lock.yaml ./
86
RUN pnpm i --frozen-lockfile
9-
10-
FROM dependencies-env AS production-dependencies-env
11-
COPY ./package.json pnpm-lock.yaml /app/
12-
WORKDIR /app
13-
RUN pnpm i --prod --frozen-lockfile
14-
15-
FROM dependencies-env AS build-env
16-
COPY ./package.json pnpm-lock.yaml /app/
17-
COPY --from=development-dependencies-env /app/node_modules /app/node_modules
18-
WORKDIR /app
7+
COPY . .
198
RUN pnpm build
209

21-
FROM dependencies-env
22-
COPY ./package.json pnpm-lock.yaml /app/
23-
COPY --from=production-dependencies-env /app/node_modules /app/node_modules
24-
COPY --from=build-env /app/build /app/build
25-
WORKDIR /app
26-
CMD ["pnpm", "start"]
10+
# 運行階段
11+
FROM nginx:alpine
12+
# 複製構建檔案
13+
COPY --from=build /app/build/client /usr/share/nginx/html
14+
# 複製 nginx 配置
15+
COPY nginx.conf /etc/nginx/conf.d/default.conf

nginx.conf

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
server {
2+
listen 80;
3+
4+
# 加入 MIME 類型設定
5+
include /etc/nginx/mime.types;
6+
7+
location / {
8+
root /usr/share/nginx/html;
9+
try_files $uri $uri/ /index.html;
10+
11+
# 設定 JavaScript 模組的 MIME 類型
12+
location ~* \.js$ {
13+
add_header Content-Type "application/javascript";
14+
}
15+
16+
location ~* \.mjs$ {
17+
add_header Content-Type "application/javascript";
18+
}
19+
}
20+
21+
# 正確處理 assets 資料夾
22+
location /assets/ {
23+
root /usr/share/nginx/html;
24+
add_header Cache-Control "public, max-age=31536000, immutable";
25+
}
26+
}

0 commit comments

Comments
 (0)