Docker - 执行shell脚本导出环境变量
Docker - execute shell script to export environment variables
我正在尝试使用 shell 脚本从 Docker 容器中导出环境变量。该脚本将 运行 一个命令并将输出保存为环境变量。 Java 应用程序将使用这些变量。
当我 运行 Docker 容器时,shell 脚本变量没有被填充。
使用 shell 脚本从 Docker 容器导出环境变量的最佳方法是什么?
FROM maven:3.8-amazoncorretto-11 as TEMP_BUILD_IMAGE
ENV APP_HOME=/src
WORKDIR $APP_HOME/
COPY pom.xml $APP_HOME/
RUN mvn clean
RUN mvn dependency:resolve
COPY src $APP_HOME/src/
RUN mvn package -Dmaven.test.skip
FROM amazoncorretto:11
ARG ENVIRONMENT
RUN yum install -y shadow-utils
ENV ARTIFACT_NAME=application-0.0.1-SNAPSHOT.jar
WORKDIR /home/nonroot/application/
COPY environment_config.sh environment_config.sh
RUN yum install -y jq
ENV JAVA_OPTS=""
CMD ["sh", "-c", "source ./environment_config.sh && java $JAVA_OPTS -jar $ARTIFACT_NAME --spring.config.location=file:./config/application.properties"]
#!/bin/bash
echo "environment ${ENVIRONMENT}"
export API_URL=$(eval COMMAND)
使用脚本计算 dockerfile
中的环境变量。
建议调查此 answer。
关于 using a shell script
来源的问题不明确。以及目标环境上下文。
1。在容器主机中使用 shell 脚本。
使用ssh
命令连接容器,挖掘容器内需要的环境
ssh -i container-ssh.key root@container.ip 'echo $(your-environment-var)'
2。在容器内使用 shell 脚本,影响容器主机的环境变量。
无能为力: 此请求与容器上下文与主机上下文的基本隔离相矛盾。
最好的建议是在容器中编写 shell 脚本,将值写入文件 CNT_ENV
。文件 CNT_ENV
位于容器主机可访问的卷中。
在容器的主机中,编写脚本或服务以根据文件 CNT_ENV
中的值更新主机环境变量。
我正在尝试使用 shell 脚本从 Docker 容器中导出环境变量。该脚本将 运行 一个命令并将输出保存为环境变量。 Java 应用程序将使用这些变量。
当我 运行 Docker 容器时,shell 脚本变量没有被填充。
使用 shell 脚本从 Docker 容器导出环境变量的最佳方法是什么?
FROM maven:3.8-amazoncorretto-11 as TEMP_BUILD_IMAGE
ENV APP_HOME=/src
WORKDIR $APP_HOME/
COPY pom.xml $APP_HOME/
RUN mvn clean
RUN mvn dependency:resolve
COPY src $APP_HOME/src/
RUN mvn package -Dmaven.test.skip
FROM amazoncorretto:11
ARG ENVIRONMENT
RUN yum install -y shadow-utils
ENV ARTIFACT_NAME=application-0.0.1-SNAPSHOT.jar
WORKDIR /home/nonroot/application/
COPY environment_config.sh environment_config.sh
RUN yum install -y jq
ENV JAVA_OPTS=""
CMD ["sh", "-c", "source ./environment_config.sh && java $JAVA_OPTS -jar $ARTIFACT_NAME --spring.config.location=file:./config/application.properties"]
#!/bin/bash
echo "environment ${ENVIRONMENT}"
export API_URL=$(eval COMMAND)
使用脚本计算 dockerfile
中的环境变量。
建议调查此 answer。
关于 using a shell script
来源的问题不明确。以及目标环境上下文。
1。在容器主机中使用 shell 脚本。
使用ssh
命令连接容器,挖掘容器内需要的环境
ssh -i container-ssh.key root@container.ip 'echo $(your-environment-var)'
2。在容器内使用 shell 脚本,影响容器主机的环境变量。
无能为力: 此请求与容器上下文与主机上下文的基本隔离相矛盾。
最好的建议是在容器中编写 shell 脚本,将值写入文件 CNT_ENV
。文件 CNT_ENV
位于容器主机可访问的卷中。
在容器的主机中,编写脚本或服务以根据文件 CNT_ENV
中的值更新主机环境变量。