想构建一个容器,在项目的根目录下有一个 .env 的文件想一同复制到容器 build 后的 /dist
中,但试了好久都提示找不到环境变量,不知道怎么加入到 Dockerfile 里,想问问大家怎么添加的
###################
# BUILD FOR LOCAL DEVELOPMENT
###################
FROM node:18-alpine As development
# 创建应用目录
WORKDIR /usr/src/app
# 复制依赖清单到容器镜像里.
# 这个星号通配符意思是复制 package.json 和 package-lock.json,复制到当前应用目录.
# 首先复制这个选项可以防止在每次代码更改时重新运行 npm install.
COPY --chown=node:node package*.json ./
# 使用 npm ci 来安装依赖而不是 npm install
RUN npm ci
# 复制安装后的依赖包到当前目录下
COPY --chown=node:node . .
# 使用指定的用户而不是 root 权限用户
USER node
###################
# BUILD FOR PRODUCTION
###################
FROM node:18-alpine As build
WORKDIR /usr/src/app
COPY --chown=node:node package*.json ./
# 我们需要通过 Nest CLI 来执行 npm run build,这是个开发依赖,然后把安装后依赖全部复制到指定目录
COPY --chown=node:node --from=development /usr/src/app/node_modules ./node_modules
COPY --chown=node:node . .
# 执行打包命令
RUN npm run build
# 设置生产环境变量
ENV NODE_ENV production
# 运行' npm ci '会删除现有的 node_modules 目录,并传入——only=production 确保只安装了生产依赖项。这确保 node_modules 目录尽可能优化
RUN npm ci --only=production && npm cache clean --force
USER node
###################
# PRODUCTION
###################
FROM node:18-alpine As production
# 将生产依赖和打包后的文件复制到指定目录下
COPY --chown=node:node --from=build /usr/src/app/node_modules ./node_modules
COPY --chown=node:node --from=build /usr/src/app/dist ./dist
# 启动服务
CMD [ "node", "dist/main.js" ]
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.