Условные настройки докера для удаленной отладки в зависимости от ОС

Как можно установить настройку 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:

...
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", и в случае ответа "Darwin" можно использовать настройки, в противном случае они должны быть перезаписаны как "xdebug.remote_connect_back = 1".

Как я могу решить это?

РЕДАКТИРОВАТЬ: В настоящее время я использую дополнительную переменную в файле.env, как APPLE_OS_X=true. Пользователи должны настроить его на false при использовании компьютеров с Linux или Windows. В зависимости от этой переменной значение xdebug.remote_connect_back будет перезаписано 1.

По-прежнему остается вопрос, как я могу отреагировать на команду оболочки "uname", чтобы автоматически установить значение APPLE_OS_X в файле.env или xdebug.remote_connect_back в файле Docker.

0 ответов

Другие вопросы по тегам