首页 > 解决方案 > 将主机的环境变量传递给 dockerfile

问题描述

我的 Dockerfile 看起来像这样:

FROM openjdk:8-jdk-alpine
VOLUME /tmp
EXPOSE 5000
ADD target/*.jar app.jar
ENV JAVA_OPTS=""

ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/.urandom -jar /app.jar"]

我想将几个环境变量(如 RDS_HOSTNAME)传递给 docker 容器。我应该如何修改这个文件来做到这一点?

标签: amazon-web-servicesdockerenvironment-variablesdockerfileamazon-elastic-beanstalk

解决方案


您可以在期间通过 ENV

  • 构建时间
  • 运行

要在构建期间设置 ENV,您需要在 Dockerfile 中进行修改。

ARG RDS_HOSTNAME
ENV RDS_HOSTNAME="${RDS_HOSTNAME}"

RDS_HOSTNAME并在构建期间传递ENV。

docker build --build-arg RDS_HOSTNAME=$RDS_HOSTNAME -t my_image .

运行:

如评论中所述,您可以通过

docker run -ti -e RDS_HOSTNAME=$RDS_HOSTNAME yourimage:latest

使用第二种方法,如果有人访问,您的 Docker 容器将不会包含容器信息,但是您每次运行容器时都需要传递,而首先您只需要在构建期间传递一次。


推荐阅读