用于远程调试的条件docker设置取决于OS

时间:2018-02-15 13:29:18

标签: docker docker-compose xdebug remote-debugging uname

如何根据本地操作系统有条件地设置php.ini设置?

.env文件包含两个变量:

XDEBUG_ENABLE=true
PHP_INI=./docker/runner/php.ini-development

Docker-compose.yml看起来像这样:

...
build:
  context: .
  dockerfile: ./docker/runner/Dockerfile
  args:
    - XDEBUG_ENABLE=${XDEBUG_ENABLE}
    - PHP_INI=${PHP_INI}
...

Dockerfile包含以下代码:

...
ARG PHP_INI=./docker/runner/php.ini-local
COPY $PHP_INI /usr/local/etc/php/php.ini

ARG XDEBUG_ENABLE=false
RUN if [ $XDEBUG_ENABLE = true ]; then pecl install xdebug-2.6.0 && docker-php-ext-enable xdebug; fi;
...

有趣的是在php.ini-development中:

...
xdebug.default_enable = 1
xdebug.remote_connect_back = 0
xdebug.remote_host = docker.for.mac.host.internal
...

此时Apple和Linux机器应该有不同的设置,因为Linux支持" xdebug.remote_connect_back = 1"而且Apple没有。

我想" uname"可以使用,如果有回应"达尔文"可以使用这些设置,否则它们应该被" xdebug.remote_connect_back = 1"覆盖。

我该如何解决?

编辑: 目前我在.env文件中使用了另一个变量,如APPLE_OS_X = true。使用Linux或Windows计算机时,用户必须将其调整为false。 根据此变量,xdebug.remote_connect_back的值将被1覆盖。

问题仍然是我如何对shell命令做出反应' uname'自动设置.env文件中APPLE_OS_X的值或Dockerfile中的xdebug.remote_connect_back。

0 个答案:

没有答案