на моем github я создаю небольшой форк из образа минимального докера debian. На самом деле это 5 пакетов, которые основаны на предыдущем:
debian-base-minimal
debian-base-standard
debian-base-security
debian-base-apache
debian-base-apache-php
На debian-base-apache Я хочу получить рабочую переменную env, которую я могу определить позже в файле docker-compose.Что должен сделать env?
В случае определения через docker-compose следует написать ServerName $SERVER_NAME
в конце /etc/apache2/apache2.conf
, чтобы задать глобальное имя сервера.Если пусто, новая строка не должна быть написана.
Но почему он не должен ничего писать, когда пуст?Причина сборки файла Docker для образа не должна включать SERVER_NAME
.
Я уже пробовал что-то вроде: echo "ServerName $SERVER_NAME" >> /etc/apache2/apache2.conf
на моем 040-debian-base-apache файл.Но при сборке он написал ServerName
в, потому что я не определил значение и его использование null
.Если я установил значение по умолчанию в Dockerfile (ENV SERVER_NAME=127.0.0.1
), то создайте образ с помощью 127.0.0.1
, и я не могу изменить 127.0.0.1
через переменную, предупредите переменную, уже заполненную значением. см. Здесь на GitHub с отмеченной линией
Я строю все вещи с помощью следующего файла.
По выходу здания с определенным ENV SERVER_NAME=127.0.0.1
в Dockerfile (на самом деле не в репо):
[...]
+ echo 'ServerName 127.0.0.1'
+ /etc/init.d/apache2 stop
Stopping Apache httpd web server: apache2.
ok.
+ /etc/init.d/apache2 start
Starting Apache httpd web server: apache2.
ok.
[...]
Было бы хорошо, если бы по умолчанию стоял 127.0.0.1 cauz, который может запустить apache.Но я не могу определить его сейчас в docker-compose.yml, так как он жестко закодирован как 127.0.0.1, а не как вывод переменной.
При выходе из здания без определенного ENV в Dockerfile (фактически версия репо):
[...]
+ echo 'ServerName '
+ /etc/init.d/apache2 stop
Stopping Apache httpd web server: apache2.
+ /etc/init.d/apache2 start
Starting Apache httpd web server: apache2 failed!
The apache2 configtest failed. ... (warning).
Output of config test was:
AH00526: Syntax error on line 228 of /etc/apache2/apache2.conf:
ServerName takes one argument, The hostname and port of the server
[...]
Кто-нибудь может мне помочь заставить это работать?Было бы неплохо понять, как это работает.
Большое спасибо заранее.