gpt4 book ai didi

docker - 在docker镜像中传递docker运行时环境变量

转载 作者:行者123 更新时间:2023-12-02 01:06:53 24 4
gpt4 key购买 nike

这是我的 docker 图像。我想从最后提到的 docker run 命令中传递的内容覆盖下面设置的默认环境变量

FROM ubuntu:16.04

ADD http://www.nic.funet.fi/pub/mirrors/apache.org/tomcat/tomcat-8/v8.0.48/bin/apache-tomcat-8.0.48.tar.gz /usr/local/
RUN cd /usr/local && tar -zxvf apache-tomcat-8.0.48.tar.gz && rm apache-tomcat-8.0.48.tar.gz
RUN mv /usr/local/apache-tomcat-8.0.48 /usr/local/tomcat
RUN rm -rf /usr/local/tomcat/webapps/*

ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64
ENV CATALINA_HOME /usr/local/tomcat
ENV CATALINA_BASE /usr/local/tomcat
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin

ENV dummy_url defaulturl
ENV database databasedefault

COPY my.war /usr/local/tomcat/webapps/

RUN echo >> /usr/local/tomcat/conf/test.properties
RUN echo dummy_url =$dummy_url >> /usr/local/tomcat/conf/test.properties
RUN echo database =$database >> /usr/local/tomcat/conf/test.properties

ENTRYPOINT ["catalina.sh", "run"]

在本地运行:

docker run -p 8080:8080 -e dummy_url=http:google.com -e database=jdbc://mysql allimages/myimage:latest

dummy_url 和数据库似乎没有在我添加的文件 - test.properties 中被覆盖。任何想法将不胜感激。

最佳答案

I want to override the default environment variables being set below from whatever is passed in the docker run command mentioned in the end

这意味着当将镜像作为容器运行时覆盖镜像文件 (/usr/local/tomcat/conf/test.properties) ( docker run ),不构建镜像( docker build 及其 --build-args option 及其 ARG Dockerfile 条目)。

这意味着您在本地创建一个脚本文件:

即:

myscript.sh

#!/bin/sh
echo dummy_url=$dummy_url >> /usr/local/tomcat/conf/test.properties
echo database=$database >> /usr/local/tomcat/conf/test.properties
args=("$@")
catalina.sh run "${args[@]}"

您将修改您的 Dockerfile to COPY该脚本并调用它:

COPY myscript.sh /usr/local/
...
ENTRYPOINT ["/usr/local/myscript.sh"]

然后,也只有到那时,docker run 的 -e 选项才会起作用。

关于docker - 在docker镜像中传递docker运行时环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48201823/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com