diff --git a/Dockerfile b/Dockerfile index dfc143222269bb5182c5b1f1bdebc65f8b99542f..b9b52966d4d51327da165d99704e59c510a13df4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,30 +1,33 @@ -FROM node:20 -# 设置工作目录 +# 使用官方Node 20镜像 +FROM node:20-alpine + +# 设置容器内工作目录 WORKDIR /app -# 复制 package.json 和 pnpm-lock.yaml 到工作目录 -# COPY package.json pnpm-lock.yaml ./ +# 安装全局工具 - 使用alpine镜像加速 +RUN npm install -g pnpm pm2 -# 安装 pnpm -RUN npm install -g pnpm bun +# 先拷贝依赖文件(利用Docker缓存层) +COPY package.json pnpm-lock.yaml ./ -# 安装 PM2 -RUN npm install -g pm2 +# 安装依赖 - 锁定版本保证一致性 +RUN pnpm install --frozen-lockfile -# 复制项目代码到工作目录 +# 拷贝项目文件(注意.dockerignore排除node_modules) COPY . . -# 安装项目依赖 -RUN pnpm install - -# 编译项目 +# 构建生产环境代码 RUN pnpm run build -# 删除开发依赖,减少镜像大小 +# 删除开发依赖 - 减少镜像体积 RUN pnpm prune --production -# 暴露应用程序端口 +# 设置时区(重要!) +RUN apk add --no-cache tzdata && \ + cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime + +# 暴露应用端口(与NestJS监听端口一致) EXPOSE 8080 -# 使用 PM2 启动 dist 目录下的 ecosystem.config.js +# 容器启动命令 - 使用pm2-runtime CMD ["pm2-runtime", "dist/ecosystem.config.js"] diff --git a/README.md b/README.md index 770a7b8dfa841164b12a07cd47042687b64ad0a1..bebdc9e999ad2f087db024cfc7aa7e1ba47a41d6 100644 --- a/README.md +++ b/README.md @@ -106,5 +106,8 @@ Docker 运行命令 docker build -t nestjs-server:latest . 构建image -docker run -d -p 8085:8085 --name nestjs-server nestjs-server:latest -运行并映射到端口 \ No newline at end of file +docker run -d -p 8080:8080 --name nestjs-server nestjs-server:latest +运行并映射到端口 + +docker exec -it [image id] /bin/bash +进入容器 \ No newline at end of file