首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Dockerfile中设置环境变量并启动父映像

如何在Dockerfile中设置环境变量并启动父映像
EN

Stack Overflow用户
提问于 2020-10-16 09:13:25
回答 1查看 105关注 0票数 0

我有一个dockerfile,它有一个entrypoint.sh文件,可以导出一些Postgres变量。然后我想启动"FROM pactfoundation/pact-broker“镜像中引用的父docker容器。查看github的Dockerfile github pact broker,它的末尾有CMD "config.ru“。所以我在我的Dockerfile中做了类似的事情:

代码语言:javascript
复制
FROM pactfoundation/pact-broker
  
COPY entrypoint.sh .

CMD ["config.ru"]

当我执行docker run命令时:

代码语言:javascript
复制
docker run --rm -e POSTGRES_PORT=5433 -e POSTGRES_DBNAME=pactsd -e POSTGRES_URL=localhost -e POSTGRES_PASSWORD=1234 -e POSTGRES_USERNAME=postgres --name pact sonamsamdupkhangsar/pact:test -d

我看到我的entrypoint.sh echo语句,容器已经死了。

代码语言:javascript
复制
setting pact broker database variables

在entrypoint.sh文件中设置环境变量后,如何启动父容器?

我还尝试了以下几点:

代码语言:javascript
复制
FROM pactfoundation/pact-broker
  
ENV PACT_BROKER_DATABASE_NAME=${POSTGRES_DBNAME}
ENV PACT_BROKER_DATABASE_USERNAME=${POSTGRES_USERNAME}
ENV PACT_BROKER_DATABASE_PASSWORD=${POSTGRES_PASSWORD}
ENV PACT_BROKER_DATABASE_HOST=${POSTGRES_URL}
ENV PACT_BROKER_DATABASE_NAME=${POSTGRES_DBNAME}
ENV PACT_BROKER_DATABASE_PORT=$POSTGRES_PORT

RUN echo "PACT_BROKER_DATABASE_PORT: $PACT_BROKER_DATABASE_PORT"

然而,当我运行我构建的docker镜像时,我仍然看不到变量被设置。我尝试了"${}“和"$”两种方法来设置env var。

EN

回答 1

Stack Overflow用户

发布于 2020-10-16 09:31:40

您必须在docker文件中使用ENV设置环境变量。

因为每一步都是在不同的容器上执行的,如果你通过shell脚本来设置,它将不会工作。考虑使用ENV命令来设置它

参考:DOCKERFILE ENV

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64381649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档