首页 > 解决方案 > 如何在字符串 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 中的环境变量注入的内容。

标签: dockerfile

解决方案


您可以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

推荐阅读