Azure 应用服务环境变量在容器中不可用

标签 azure docker environment-variables azure-web-app-service

我有一个在 Azure 应用服务中运行的 Docker 容器。在我的 Azure 应用服务配置部分中,我有一个用于数据库连接的定义变量的列表。我想在 wp-config.php 文件中的 docker 容器中使用它们来连接到 Azure MySQL 数据库。但是,这些变量在容器中根本不可用。

在我的启动脚本中添加以下行后,我尝试使用“env”或“printenv”命令查看它们:

eval $(printenv | sed -n "s/^\([^=]\+\)=\(.*\)$/export \1=\2/p" | sed 's/"/\\\"/g' | sed '/=/s//="/' | sed 's/$/"/' >> /etc/profile)

不幸的是,没有成功。我也尝试通过 PHP 使用 getenv('variable_name') 函数获取它们,也没有成功。我的所有环境变量都在 Kudu 容器中可用,该容器是与在应用程序服务中运行我的应用程序的实际容器一起创建的,但是,我根本无法在我的应用程序容器中使用它们。容器本身是 Apache + WordPress 镜像,我在下面附加了我的 Dockerfile 和启动脚本:

Dockerfile:

FROM wordpress:4.9.1-apache
RUN apt-get update
RUN apt-get -y install openssh-server \
    && echo "root:Docker!" | chpasswd

COPY sshd_config /etc/ssh/
RUN mkdir -p /tmp
COPY ssh_setup.sh /tmp
RUN chmod +x /tmp/ssh_setup.sh \
    && (sleep 1;/tmp/ssh_setup.sh 2>&1 > /dev/null)

COPY . /var/www/html

RUN chown -R www-data:www-data /var/www/html/

ENV PORT 80
EXPOSE 80 2222

ADD start.sh /
RUN chmod +x /start.sh
ENTRYPOINT ["/start.sh"]

开始.sh:

#!/bin/bash
/usr/sbin/sshd
apache2-foreground
eval $(printenv | sed -n "s/^\([^=]\+\)=\(.*\)$/export \1=\2/p" | sed 's/"/\\\"/g' | sed '/=/s//="/' | sed 's/$/"/' >> /etc/profile)

最佳答案

UPD:该问题是由于启用持久存储的应用设置造成的。一旦我将值从“true”更改为“false”,出于某种原因,应用程序设置就开始充当环境变量。

关于Azure 应用服务环境变量在容器中不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73634150/

相关文章:

c# - Azure blob批量删除西里尔字符

c# - Service Fabric Web Api 具有外部和内部端点

azure - 在 Azure 应用服务设置中存储连接字符串

php - Laravel Dusk - 无法使其在 GitLab CI 上运行

php - 安装mongodb pecl软件包时出现问题:/tmp/pear/temp/mongodb/configure:./configure.lineno:第1行:语法错误:引号未终止

c++ - 如何以跨平台的方式在C中获取环境变量

日期的 Azure 数据工厂案例条件

python -/var/run/docker.sock : permission denied while running docker within Python CGI script

environment-variables - 是否可以在 .sublime-project 文件中设置环境变量?

bash - macOS Catalina 10.15(beta) - 为什么 ~/.bash_profile 不是由我的 shell 提供的?