PHP中的Docker文件环境变量问题

时间:2017-08-25 07:14:27

标签: php docker

我正在使用PHP Apache的docker文件。我在docker文件中声明了一些环境变量,但是当我运行docker时,它只获取Apache环境变量,而我的环境变量不起作用。 这是我的泊坞文件。

# Install     dependencies
From ubuntu:16.04
RUN apt-get update -y
RUN apt-get update && apt-get -y upgrade && DEBIAN_FRONTEND=noninteractive apt-get -y install \
    vim apache2 php7.0 php7.0-mysql php7.0-gd php7.0-mbstring libapache2-mod-php7.0 curl lynx-cur

RUN service apache2 stop

# Install app
RUN rm -rf /var/www/html/*
ADD . /var/www/html

# Configure apache
RUN a2enmod php7.0
RUN a2enmod rewrite
RUN chown -R www-data:www-data /var/www/html/backend/runtime /var/www/html/backend/web/assets /var/www/html/uploads
RUN sed -i '/<Directory \/var\/www\/>/,/<\/Directory>/ s/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf

ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
ENV APACHE_LOCK_DIR /var/lock/apache2
ENV APACHE_PID_FILE /var/run/apache2.pidd
ENV test myenv_variable_value

EXPOSE 80

RUN service apache2 start

CMD ["apache2", "-D", "FOREGROUND"]

虽然我可以轻松打印APACHE_PID_FILE,但当我尝试test时它无效。 这是我的PHP方法

<?php
    getenv('APACHE_PID_FILE');
    $_ENV['test']
    getenv('test');
?>

这两种方法在测试环境中都不起作用。

由于

1 个答案:

答案 0 :(得分:1)

问题是Apache没有公开apache启动时带来的环境变量。您需要使用您的配置公开这些环境变量。 Apache有一个PassEnv指令需要使用

https://httpd.apache.org/docs/current/mod/mod_env.html

PassEnv test

这会将环境test传递到您的网页。你需要它来为你想要暴露的每个环境做这件事。