dockerfile - 如何在字符串 docker 中使用环境变量
问题描述
我有以下dockerfile:
FROM alpine:latest
RUN apk add wget
RUN wget --http-user=foo@gmail.com --http-password=asdfghjhgfdf https://my.datomic.com/repo/com/datomic/datomic-pro/$VERSION/da tomic-pro-$VERSION.zip -O datomic-pro-$VERSION.zip
CMD ["datomic-pro-$VERSION/bin/transactor" "config/samples/dev-transactor-templ ate.properties
"]
在最后一行我想运行 datomic-pro-$VERSION/bin/transactor 但 $VERSION 取决于环境变量。如何使字符串采用正确的环境变量?目前它使用文字 $VERSION 而不是 CMD 中的环境变量注入的内容。
解决方案
您可以ARG
用于传递构建时间参数。并且在 docker build 期间将环境变量传递--build-arg <key1>=<value1>
给docker build
命令
在这种情况下
FROM alpine:latest
RUN apk add wget
RUN wget --http-user=foo@gmail.com --http-password=asdfghjhgfdf https://my.datomic.com/repo/com/datomic/datomic-pro/$VERSION/da tomic-pro-$VERSION.zip -O datomic-pro-$VERSION.zip
ARG VERSION
CMD ["datomic-pro-$VERSION/bin/transactor" "config/samples/dev-transactor-template.properties
"]
然后按如下方式构建您的容器:
$ docker build --build-arg VERSION=122.345 Dockerfile
在 docker build 中,现在您也可以传递普通的 shell 环境变量
$ docker build --build-arg VERSION=$VERSION Dockerfile
推荐阅读
- excel - 如何使用来自另一个文件的副本来解析 vba 代码
- python - Tkinter、类和调用外部python程序
- ios - 尝试定义结果类型符合协议的 NSFetchedRequest
- c++ - 选择 QTableView 时如何设置其整个行边框的样式?
- amazon-web-services - AWS Cloudformation:如果 CF 的引用 S3 文件发生更改,则没有更改集
- javascript - 将图像路径转换为 base64 - React Native
- solr - Solr 文档中奇怪的导入数组字段类型
- c - 当我使用 qsort 在 cses 问题集中提交我的代码时,它不接受它。有没有其他方法可以解决这个问题?
- list - 优化列表搜索
- c++ - 错误“表达式必须具有指向对象的类型,但它在 for 循环中具有类型“int””