diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..9f75435 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,58 @@ +# ------------------------ +# Node / Package Manager +# ------------------------ +node_modules +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +.pnpm-store + +# Nuxt build outputs +.output +.nuxt +dist +.cache +.unimport +.h3 +.nitro +**/.nitro + +# Dev tools / OS files +.DS_Store +Thumbs.db + +# Logs +*.log +logs +!.gitkeep + +# Local env files (runtime env should be provided by Docker/K8s) +.env +.env.* +!.env.example + +# Git +.git +.gitignore +.gitattributes + +# Editor / IDE +.vscode +.idea +*.swp +*.swo + +# Tests +coverage +*.lcov + +# Docker +Dockerfile* +docker-compose.yml + +# CI / Local build artifacts +*.tgz +*.zip +*.tar +*.mdx diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..f8876aa --- /dev/null +++ b/Dockerfile @@ -0,0 +1,41 @@ + -------- Base image -------- +FROM node:22-alpine AS base +ENV NODE_ENV=production +WORKDIR /app + +# -------- Dependencies layer ------- +FROM base AS deps +WORKDIR /app + +RUN corepack enable + +# Copy package.json and lockfile +COPY package.json pnpm-lock.yaml .npmrc ./ + +# Install dependencies with cache +RUN --mount=type=cache,target=/root/.local/share/pnpm/store pnpm install + +# -------- Build layer ------- +FROM deps AS build +# Copy entire project +COPY . ./ + +ENV NITRO_PRESET=node-server + +# Build the project +RUN pnpm run build + +# ------- Runtime layer ------- +FROM base AS runtime +WORKDIR /app + +# COPY .output folder +COPY --from=build /app/.output ./ + +ENV PORT=3000 +ENV NITRO_PRESET=node-server +ENV HOST=0.0.0.0 + +EXPOSE 3000 + +CMD ["node", "/app/server/index.mjs"] diff --git a/README.md b/README.md index 6510b92..b2f5b11 100644 --- a/README.md +++ b/README.md @@ -58,9 +58,12 @@ pnpm run dev 项目用到以下环境变量,请自行在项目中配置 -- 'DIRECTUS_URL': 后端Directus服务URL -- 'DIRECTUS_TOKEN': Directus服务的API Token -- 'MEILI_HOST': Meilsearch服务地址 +> [!NOTE] +> +> - NUXT_PUBLIC_DIRECTUS_URL: 后端Directus服务URL +> - NUXT_PUBLIC_DIRECTUS_TOKEN: 后端Directus服务的API Token +> - MEILI_HOST: Meilisearch服务地址 +> - MEILI_SEARCH_KEY: MeilisearchKey ## 构建与部署 @@ -81,3 +84,21 @@ pnpm run preview 2. 部署 部署构建后的项目并推送到文件服务器中,具体步骤视服务器配置而定 + +## Dockerfile部署 + +1. 构建Docker镜像 + +在项目根目录执行docker build + +```bash +docker build -t jinshen-website . +``` + +2. 运行docker容器 + +```bash +docker run --name jinshen-website +``` + +网站默认在3000端口开放