node.js - jenkins作业运行时如何为nodejs项目创建.env文件
问题描述
我有一个 nodejs MERN 堆栈项目。我已经在 docker 容器中的服务器 Linux 实例上配置了 Jenkins 作业。我有一份詹金斯的工作来提取代码并构建应用程序。我使用 .env 文件提供了一些变量和凭据,如何在 Jenkins 作业运行时创建此文件。因为我想对 nodejs 项目内容进行 dockerize 并在其他地方运行它。
我是 DevOps 的新手
这是詹金斯的工作。
我想参数化 Jenkins 作业,它应该在我的 nodejs 项目的根目录下创建一个 .env 文件。
解决方案
为什么要使用 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 用于管理您的 env 变量。
如果您真的想在构建映像时创建 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`
推荐阅读
- node.js - AWS Lambda(专门用于 Node.js 运行时)使用什么指标来确定使用的最大内存?
- c++ - 如何修复strlen的“条件跳转或移动取决于未初始化的值”valgrind错误?
- django - 如何保存用户会话后可以访问的数据库中搜索导航栏中的用户查询词?
- kubernetes - 无法使用在 Minikube 上运行的 Argo 工作流将数据发送到 Minio
- async-await - Cloud firestore 和 nextjs - getInitialProps 和异步数据
- reactjs - React 项目,在多台计算机之间共享
- groovy - 如果存在匹配值,如何循环遍历地图并仅显示一行
- python - 为什么时间没有打印实际时间?
- android - 如何在 Android Studio (LogCat) 中删除 chromium 日志
- python - 尽管代码工作正常,但状态栏上的语法无效