程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何从 PHP Docker Entrypoint 中的脚本导出环境变量大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何从 php Docker Entrypoint 中的脚本导出环境变量?

开发过程中遇到如何从 php Docker Entrypoint 中的脚本导出环境变量的问题如何解决?下面主要结合日常开发的经验,给出你关于如何从 php Docker Entrypoint 中的脚本导出环境变量的解决方法建议,希望对你解决如何从 php Docker Entrypoint 中的脚本导出环境变量有所启发或帮助;

我有一个脚本可以获取变量并将其导出为环境变量。而且我的 Web 应用程序也有基于 php 的 docker。我尝试在 docker-php-entrypoint 中执行脚本,但未加载环境变量。

Dockerfile 如下所示。

FROM php:7.2-apache

copY docker-php-entrypoint /usr/local/bin/
copY load_parameter_store.sh /opt/
copY src/ /var/www/HTML/

这是 docker-php-entrypoint 内容。它运行一个脚本 load_parameter_store.sh

#!/bin/sh
set -e

/opt/load_parameter_store.sh

# first arg is `-f` or `--some-option`
if [ "${1#-}" != "$1" ]; then
    set -- php "$@"
fi

exec "$@"

这是脚本本身

EXPORT_STATEMENT='export MY_VARIABLE=Foobar' #Will be loaded from AWS SSM Parameter Store

eval $EXPORT_STATEMENT

我有一个显示环境变量的 php 网页脚本。

<?php

$var = $_ENV['MY_VARIABLE'];
echo "Hello World {$var}";

最终目标是我希望 php 显示 Hello World Foobar,但我得到的只是 Hello World。这意味着该变量未加载。

我该怎么做才能解决这个问题?

解决方法

您需要使用特殊的 sHell . command 来运行设置环境变量的脚本:

#!/bin/sh

# the `.` at the start of this line is required
. /opt/load_parameter_store.sh

# double check: you will not see a value here without the `.`
echo "MY_VARIABLE is '$MY_VARIABLE'"

某些 sHell 具有名为 source 的相同命令,但它不是 POSIX 标准的一部分,并且它不适用于 Alpine 基础映像中包含的 /bin/sh

如果您不使用 .,那么 load_parameter_store.sh 脚本将作为新 sHell 中的子进程运行;任何在那里export编辑的内容都将仅限于该脚本的 sHell 环境,并且在脚本完成时会丢失。

大佬总结

以上是大佬教程为你收集整理的如何从 PHP Docker Entrypoint 中的脚本导出环境变量全部内容,希望文章能够帮你解决如何从 PHP Docker Entrypoint 中的脚本导出环境变量所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:如何从