Node.js 为docker映像生成.env文件

Node.js 为docker映像生成.env文件,node.js,docker,environment-variables,Node.js,Docker,Environment Variables,我想生成一个.env文件,并在docker使用Dockerfile构建期间将其推送到docker映像。 问题是.env文件没有复制到docker映像。 我试图将COPY.env添加到/website/.env,但它找不到。 我在构建过程中执行一个nodejs脚本,该脚本从AWS获取env,然后创建一个.env文件 FROM node:10.15.3-alpine ARG SERVER_ENV # Create app directory RUN mkdir /website WORKDIR

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

可能您有一个.dockerginore文件阻止将.env文件复制到映像?

可能您有一个.dockerginore文件阻止将.env文件复制到映像?

我的dockerginore只包含.git,但我有一个非常奇怪的问题。当我在docker构建过程中ls-ail时,它会显示.env和no.git文件。在启动docker映像之后,我没有.env文件,.git folderMy dockrignore只包含.git,但我有一个非常奇怪的问题。当我在docker构建过程中ls-ail时,它会显示.env和no.git文件。在启动docker映像之后,我没有.env文件,我有.git文件夹边注释,通常.env包含凭据。不是你想分享的东西。通常,我看到项目包含一个.env.dist,其中包含var名称(键)。使用者必须“cp.env.dist.env”并填充凭据。在任何版本控制系统中都会忽略.env,以防止提交凭据。值得思考。通常是旁注。env包含凭证。不是你想分享的东西。通常,我看到项目包含一个.env.dist,其中包含var名称(键)。使用者必须“cp.env.dist.env”并填充凭据。在任何版本控制系统中都会忽略.env,以防止提交凭据。值得深思。