diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000..05f381c
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,8 @@
+/node_modules
+/.git
+/.gitignore
+/.vscode
+/.DS_Store
+/*.md
+/dist
+
diff --git a/README.md b/README.md
index 6ccc6f7..f9c6543 100644
--- a/README.md
+++ b/README.md
@@ -71,6 +71,13 @@ pnpm build
 
 ```
 
+You can deploy **nova-admin** in a production environment using docker-compose.
+```bash
+# Build product
+docker compose -f docker-compose.product.yml up --build -d
+```
+> The nginx.conf provided is for reference only. You can adjust it according to your own needs.
+
 ## Related projects
 
 - [Nova-admin-nest](https://github.com/chansee97/nove-admin-nest) (under development) Nova-Admin supporting background project based on TS, NestJs, typeorm
diff --git a/README.zh-CN.md b/README.zh-CN.md
index d758eba..6a47edd 100644
--- a/README.zh-CN.md
+++ b/README.zh-CN.md
@@ -71,6 +71,13 @@ pnpm build
 
 ```
 
+在生產環境也可以使用 docker-compose 部署 **nova-admin**
+```bash
+# Build product
+docker compose -f docker-compose.product.yml up --build -d
+```
+> 關於 nginx.conf 只供參考,你可以根據自己的需求進行調整。
+
 ## 相关项目
 
 - [Nova-admin-nest](https://github.com/chansee97/nove-admin-nest) (开发中)基于TS, NestJs, typeorm的Nova-Admin配套后台项目
diff --git a/docker-compose.product.yml b/docker-compose.product.yml
new file mode 100644
index 0000000..99664f2
--- /dev/null
+++ b/docker-compose.product.yml
@@ -0,0 +1,8 @@
+services:
+  nove-admin:
+    build:
+      context: .
+      dockerfile: ./docker/dockerfile.product
+    container_name: nove-admin
+    ports:
+      - 80:80
diff --git a/docker/dockerfile.product b/docker/dockerfile.product
new file mode 100644
index 0000000..cf16abe
--- /dev/null
+++ b/docker/dockerfile.product
@@ -0,0 +1,23 @@
+FROM node:20-slim AS base
+ENV PNPM_HOME="/pnpm"
+ENV PATH="$PNPM_HOME:$PATH"
+RUN corepack enable
+COPY . /app
+WORKDIR /app
+
+FROM base AS prod-deps
+RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --prod --frozen-lockfile
+
+FROM base AS builder
+RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
+RUN pnpm run build
+
+FROM nginx:1.23.1-alpine
+
+WORKDIR /www
+
+COPY --from=builder /app/dist/ .
+
+COPY ./nginx.conf /etc/nginx/conf.d/default.conf
+
+EXPOSE 80
diff --git a/nginx.conf b/nginx.conf
new file mode 100644
index 0000000..6ca9fb2
--- /dev/null
+++ b/nginx.conf
@@ -0,0 +1,66 @@
+server {
+    listen 80;
+    listen [::]:80;
+
+    # 啟用 gzip 壓縮
+    gzip on;
+    gzip_vary on;
+    gzip_min_length 10240;
+    gzip_proxied expired no-cache no-store private auth;
+    gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml application/javascript;
+    gzip_disable "MSIE [1-6]\.";
+
+    # 設定 MIME types
+    include /etc/nginx/mime.types;
+
+    # 基本安全設定
+    add_header X-Frame-Options "SAMEORIGIN";
+    add_header X-XSS-Protection "1; mode=block";
+    add_header X-Content-Type-Options "nosniff";
+
+    # 增加伺服器效能的配置
+    client_max_body_size 100M;
+    client_body_buffer_size 128k;
+    proxy_connect_timeout 90;
+    proxy_send_timeout 90;
+    proxy_read_timeout 90;
+    proxy_buffer_size 4k;
+    proxy_buffers 4 32k;
+    proxy_busy_buffers_size 64k;
+
+    location / {
+        root /www;
+        index index.html;
+        try_files $uri $uri/ /index.html;
+
+        # 設定快取控制
+        location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
+            expires 30d;
+            add_header Cache-Control "public, no-transform";
+        }
+
+        # 動態內容不快取
+        location = /index.html {
+            add_header Cache-Control "no-store, no-cache, must-revalidate";
+            add_header Pragma "no-cache";
+            expires -1;
+        }
+
+        # 錯誤處理
+        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
+        proxy_intercept_errors on;
+
+        # 基本的代理設定
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+    }
+
+    # 禁止訪問隱藏文件
+    location ~ /\. {
+        deny all;
+        access_log off;
+        log_not_found off;
+    }
+}