将docker-compose .ENV文件值交易到容器

问题描述 投票:0回答:1

services: php: container_name: php build: context: . command: ["/usr/local/sbin/php-fpm", "-F", "-R"] expose: - "9003" env_file: - .env

我的

Dockerfile
是基本的

FROM propietary-image-here-custom-8.3-fpm

RUN apt-get update

RUN pecl install xdebug && docker-php-ext-enable xdebug.so
COPY ./xdebug.ini /usr/local/etc/php/conf.d/

CMD ["/usr/local/sbin/php-fpm", "-F", "-R"]

my

.env
只是一行;

XDEBUG_MODE=debug

我的

xdebug.ini
如下;

xdebug.mode=${XDEBUG_MODE}

我可以用
docker compose up -d

很好地启动它,如果我运行
docker compose config
我可以看到变量。

但是,当我使用

docker run -i -t php /bin/bash
并执行
env
进入容器时,它不在那里,并且不适用于xdebug.ini.

                
tit不使用xdebug.ini.

您在xdebug.ini中可能是多余的:环境中的

xdebug.mode=${XDEBUG_MODE}
php docker docker-compose
1个回答
1
投票
因此,您可以在xdebug.ini中替换thing the默认(= greated)已完全适合您的模式。
compare:

string xdebug.mode =develop
(xdebug.org)

,在那里找到此警告:


warning:
一些Web服务器具有一个配置选项,可以防止环境变量传播到PHP和XDEBUG。
,例如,php-fpm具有

XDEBUG_MODE

配置设置
默认情况下是

${XDEBUG_MODE},如果要使用clear_env

确保您的Web服务器不会清洁环境,或者专门允许通过
on

环境变量。 对于XDEBUG3扩展名的解释php-fpm phpinfo()输出,请参见带有XDEBUG 3 ENV XDEBUG_MODE的DOCKER PHP不起作用(Q&a)

测试容器环境的方式是错误的。而不是

off
,使用XDEBUG_MODE
XDEBUG_MODE
这是您配置的
dockercompose
要做。请参阅
使用

run

属性

(docker.com)

使用一个文件可让您使用相同的文件供普通命令[BOLD BY] 如果您坚持使用

exec

$ cat .env FOO=BAR $ docker exec -i -t php php -r 'print_r(getenv());' Array ( [PATH] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin [HOSTNAME] => f30ed99b9fed [TERM] => xterm [FOO] => BAR [PHPIZE_DEPS] => autoconf dpkg-dev file g++ gcc libc-dev make pkg-config re2c [PHP_INI_DIR] => /usr/local/etc/php [PHP_CFLAGS] => -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 [PHP_CPPFLAGS] => -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 [PHP_LDFLAGS] => -Wl,-O1 -pie [GPG_KEYS] => AFD8691FDAEDF03BDF6E460563F15A9B715376CA 9D7F99A0CB8F05C8A6958D6256A97AF7600A39A6 0616E93D95AF471243E26761770426E17EBBB3DD [PHP_VERSION] => 8.4.3 [PHP_URL] => https://www.php.net/distributions/php-8.4.3.tar.xz [PHP_ASC_URL] => https://www.php.net/distributions/php-8.4.3.tar.xz.asc [PHP_SHA256] => 5c42173cbde7d0add8249c2e8a0c19ae271f41d8c47d67d72bdf91a88dcc7e4b [HOME] => /root )

在运行一个独立于配置的构图时,必须在命令行上添加
env_file
开关:

.env
    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.