将主机的环境变量传递给 dockerfile
Posted
技术标签:
【中文标题】将主机的环境变量传递给 dockerfile【英文标题】:Pass host machine's environment variables to dockerfile 【发布时间】:2020-10-23 04:35:12 【问题描述】:我的 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 容器。我应该如何修改这个文件来做到这一点?
【问题讨论】:
docker run -ti -e RDS_HOSTNAME=$RDS_HOSTNAME yourimage:latest
【参考方案1】:
你可以通过 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 容器将不会包含容器信息,但您每次运行容器时都需要传递,而首先您只需要在构建期间传递一次。
【讨论】:
以上是关于将主机的环境变量传递给 dockerfile的主要内容,如果未能解决你的问题,请参考以下文章
在构建时使用 docker-compose 将环境变量传递给 docker 映像