【问题标题】:how to create .env file for nodejs project while jenkins job is runningjenkins作业运行时如何为nodejs项目创建.env文件
【发布时间】:2019-10-22 22:57:58
【问题描述】:
我有一个 nodejs MERN 堆栈项目。我已经在 docker 容器中的服务器 Linux 实例上配置了 Jenkins 作业。我有一份詹金斯的工作来提取代码并构建应用程序。
我使用 .env 文件提供了一些变量和凭据,如何在 Jenkins 作业运行时创建此文件。因为我想将 nodejs 项目内容 dockerize 并在其他地方运行。
我是 DevOps 的新手
这是 Jenkins 的工作。
我想参数化 Jenkins 作业,它应该在我的 nodejs 项目的根目录下创建一个 .env 文件。
【问题讨论】:
标签:
node.js
jenkins
dotenv
【解决方案1】:
为什么要使用 jenkins 生成 envfile?
您可以为每个环境手动创建环境文件,并在运行映像时将它们推送到映像中,例如:
sudo docker run -d --restart=always --name=${appName} --env-file ${envfilepath}/${envfile}.env -p ${externe appPort}:${interne appPort} ${your registry}/${appName}:${your tag}
你也可以组合 rundeck 到 cron 并开始你的工作,kubernetes 用于管理你的环境变量。
如果你真的想在构建镜像时创建 envfile,在你的 dockerfile 中,你可以这样做:
################################ builder
FROM ${BUILDER_IMAGE} as builder
RUN npm i
RUN npm run `command to create envfile`
# see content of your file
RUN cat `path of your envfile / your envfile`
################################ final build
FROM ${BUILDER_IMAGE}
COPY --from=builder `path of your envfile / your envfile` `definitive path of your envfile / definitive envfile`
如果你想从你的 docker 镜像中导出你的文件
(docker run -t --rm --entrypoint cat $(IMAGE) `path of your envfile / your envfile`) > `local path of your envfile / local envfile`