如何在字符串docker中使用环境变量

时间:2021-07-31 05:06:30

标签: dockerfile

我有以下 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 中的环境变量注入的内容。

2 个答案:

答案 0 :(得分:0)

您可以使用 coords[0] = results[0].geometry.location.lat(); coords[1] = results[0].geometry.location.lng(); 来传递构建时间参数。在 docker build 期间将环境变量作为 ARG 传递给 --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 中,现在您也可以传递普通的 shell 环境变量

$ docker build --build-arg VERSION=122.345 Dockerfile

答案 1 :(得分:-1)

如果您有很多环境变量,特别是如果它们是秘密的,您可以使用 env 文件:

$ docker run --env-file ./my_env_test ubuntu bash

第二个选项 您也可以在 Dockerfile 中定义 ENV。

ENV DATABASE_URL 127.0.0.1