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 中的值更新主机环境变量。