docker - 如何将环境变量传递给dockerfile
问题描述
如何将 kaps-service 作为环境变量传递给我的 dockerfile
file.txt:- 匹配 $Match 名称 prod
dockerfile:- FROM image ENV Match=kaps-service COPY file.txt /etc/
要求是我想从 dockerfile 替换 file.txt 中的 $Match 值,或者我可以在启动 docker 容器时传递这个值吗?有办法吗?
解决方案
从 Dockerfile 你可以使用类似的东西:
FROM image
ARG Match="kaps-service"
COPY file.txt /etc/
RUN sed -i 's/$Match/'$Match'/g' /etc/file.txt
最后一行将用“kaps-service”替换所有出现的 $Match。这将在构建步骤中发生,您可以使用--build-arg
标志修改 Match 参数
如果您希望替换处于运行步骤(docker run)中,您可以使用 RUN 命令并将其放入一些脚本中,该脚本将在您的应用程序之前执行此命令。它可以是这样的:
FROM image
WORKDIR /app
ENV Match="kaps-service"
COPY file.txt /etc/
COPY run .
CMD "./run"
哪里run
是:
#!/bin/bash
sed -i 's/$Match/'$Match'/g' /etc/file.txt
# run you app
当您启动容器时会发生更改docker run
,您可以将 Match 变量添加-e Match=something
到命令中。
推荐阅读
- python-3.x - 在使用唯一路径算法记忆我的结果时,我做错了什么吗?
- python - 如何在决策树分类器中解释标签编码的分类特征?
- c# - 在datagridview C#表单上的一行中仍然保留多个数据
- java - Stream 已被供应商操作或关闭
- ruby-on-rails - 从 ActiveStorage 上传中删除 S3 URL 标头 [Rails]
- python - 从numpy数组中有效地采样以相同数字终止的连续整数序列?
- mongodb - mongodb loopup管道geoNear
- python - 将散点颜色与图像颜色条匹配
- java - 如何更改单词之间的距离?
- node.js - Express Router - 上传到 S3 和 MongoDb