作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的要求是在 azure devops 管道构建的 docker 镜像上设置一些环境变量。
此管道用于开发/阶段/生产环境,每个阶段都绑定(bind)到自己的一组组变量,这些变量我希望在 nodejs 应用程序中可用。
我可以使用 $VARNAME 读取管道中的变量,但在使用 process.env.VARNAME 运行代码时无法读取相同的变量。
我知道这不是最好的方法,因为图像会包含可能包含 secret 的环境变量,因此我也对不同的想法持开放态度。
到目前为止我已经尝试过:
在 dockerfile 中添加了 ARG
ARG VARNAME=某个值
在添加的 docker build 任务上
- task: Docker@2
displayName: Build docker image
inputs:
command: build
repository: $(imageName)
tags: $(Build.BuildId)
buildContext: '$(Pipeline.Workspace)/PublishedWebApp'
arguments: --build-arg SOMEVAR=anewvalue
我尝试在 nodejs 代码中以 process.env.SOMEVAR 的形式访问它。
最佳答案
我可以看到有一些组件需要对齐:
--build-arg
传递 key .这是对的。 ARG
在 dockerfile 中接收通过 --build-arg
传入的内容.这是对的。 FROM python:3.7-slim
ARG SOME_PASSED_IN_ARG
ENV SOMEVARNAME $SOME_PASSED_IN_ARG
...
您将访问
SOMEVARNAME
喜欢
process.env.SOMEVARNAME
从 Node 应用程序。
docker run ... --e SOME_PASSED_IN_ARG=someOtherValue
一些“更好”的做法:
关于node.js - 如何在 azure devops 管道中的 docker 镜像中嵌入环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67284215/
我是一名优秀的程序员,十分优秀!