大佬教程收集整理的这篇文章主要介绍了如何从 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,请注明来意。