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}
compare:string xdebug.mode =develop(xdebug.org)
,在那里找到此警告:
warning:一些Web服务器具有一个配置选项,可以防止环境变量传播到PHP和XDEBUG。,例如,php-fpm具有
XDEBUG_MODE
配置设置默认情况下是
${XDEBUG_MODE}
,如果要使用clear_env
。
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