
想构建一个容器,在项目的根目录下有一个 .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" ] 1 mdn 2023-03-17 17:15:28 +08:00 最好不要将 .env 放入镜像中 可以使用 docker run --env-file /home/.env image ,读取环境变量文件 |
2 hingle 2023-03-17 17:16:42 +08:00 看看有没有 .dockerignore 文件 |
3 dominickkorey OP |
4 hingle 2023-03-17 17:24:15 +08:00 COPY --chown=node:node .env ./dist |
5 dominickkorey OP @hingle 试过这么写但都不行 |
6 wdssmq 2023-03-17 18:26:09 +08:00 .env 不应该是从 node 执行的当前路径加载么 |