【问题标题】:Generate .env file for docker image为 docker 镜像生成 .env 文件
【发布时间】:2019-08-22 16:53:48
【问题描述】:

我想在使用 Dockerfile 进行 docker 构建期间生成一个 .env 文件并将其推送到 docker 映像。 问题是 .env 文件未复制到 docker 映像。 我试图将 COPY .env 添加到 /website/.env 但找不到它。 我在构建过程中执行一个 nodejs 脚本,从 AWS 获取环境,然后创建一个 .env 文件。

FROM node:10.15.3-alpine

ARG SERVER_ENV

# Create app directory

RUN mkdir /website
WORKDIR /website

COPY . /website/
RUN node aws ${SERVER_ENV}
COPY .env /website/.env
COPY package.json yarn.lock ./
RUN ls -al
RUN pwd

# Install Yarn
RUN npm install -g yarn@1.15.2

# Install app dependencies
RUN yarn install

# Build source files
RUN yarn run build

更新 我终于找到了修复它的方法。 我像这样在我的 Dockerfile 中分离任务:

FROM mhart/alpine-node:10 as env
ARG SERVER_ENV

WORKDIR /usr/src
COPY aws.js /usr/src
RUN yarn add aws-sdk
COPY . .
RUN node aws ${SERVER_ENV}

FROM mhart/alpine-node:10 as base
WORKDIR /usr/src
COPY package.json yarn.lock /usr/src/
RUN yarn install
COPY . .
COPY --from=env /usr/src .
RUN yarn build


FROM mhart/alpine-node:10
WORKDIR /usr/src
COPY --from=base /usr/src .

【问题讨论】:

  • 旁注,通常 .env 包含凭据。不是你想分享的东西。通常我会看到项目包含一个 .env.dist ,其中包含 var 名称(键)。消费者必须“cp .env.dist .env”并填充凭据。 .env 在任何版本控制系统中也会被忽略,以防止提交凭据。值得深思。

标签: node.js docker environment-variables


【解决方案1】:

也许您有一个 .dockerignore 文件阻止将 .env 文件复制到映像?

【讨论】:

  • 我的 dockerignore 只包含 .git 但我有一个非常奇怪的问题。当我在 docker 构建过程中 ls -ail 时,它会向我显示 .env 而没有 .git 文件。启动 docker 镜像后,我没有 .env 文件,我有 .git 文件夹
  • 拯救了我的一天,没有注意到它被忽略了
猜你喜欢
  • 2021-11-27
  • 2018-04-25
  • 2020-03-23
  • 2015-07-07
  • 2020-09-29
  • 2020-05-22
  • 2017-09-28
  • 2015-03-14
  • 2010-09-18
相关资源
最近更新 更多