Допустим, я вошел в свою Fedora как reynierpm
и создам образ Docker из Dockerfile. Это изображение будет содержать среду LAMP. У меня есть файл Apache Virtual Host (VH) по умолчанию, который выглядит следующим образом:
<VirtualHost *:80>
#ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory /var/www>
AllowOverride All
Require all granted
</Directory>
ErrorLog /dev/stdout
CustomLog /dev/stdout combined
</VirtualHost>
В рамках процесса сборки этот файл копируется в нужное место на образе.
Могу ли я получить имя пользователя, вошедшего в систему, с хоста и динамически установить его в этом VH? В итоге хотелось бы получить следующий результат:
<VirtualHost *:80>
ServerName reynierpm.dev
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory /var/www>
AllowOverride All
Require all granted
</Directory>
ErrorLog /dev/stdout
CustomLog /dev/stdout combined
</VirtualHost>
Я знаю, что могу получить значение для текущего пользователя, используя $(whoami)
из bash, но как я могу вставить/установить его в файл VH при сборке Docker?
Это содержимое Dockerfile
:
FROM ubuntu:14.04.5
MAINTAINER Me <[email protected]>
ARG USER_NAME=unknown
VOLUME ["/var/www"]
RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive \
apt-get install -y software-properties-common && \
apt-get update && \
apt-get install -y \
apache2 \
php5 \
php5-cli \
libapache2-mod-php5 \
php5-gd \
php5-json \
php5-mcrypt \
php5-mysql \
php5-xdebug \
php5-curl \
php5-memcached \
php5-mongo \
zend-framework \
mc \
nano
# Copy default virtual host file.
COPY /config/apache2_vhost/apache_default /etc/apache2/sites-available/000-default.conf
COPY run /usr/local/bin/run
RUN chmod +x /usr/local/bin/run
RUN a2enmod rewrite
EXPOSE 80
EXPOSE 9001
CMD ["/usr/local/bin/run"]
ОБНОВЛЕНИЕ: сборка завершается ошибкой при попытке использовать аргументы
Следуя предложению @Elton, я добавил эту строку в файл run
:
sed -i "s/#ServerName www.example.com/$USER_NAME.dev/g" /etc/apache2/sites-available/000-default.conf
А затем попробуйте построить образ как:
docker build --build-arg USER_NAME=$(whoami) -t dev-php55 .
Но не работает со следующим сообщением:
Один или несколько аргументов сборки [USER_NAME] не были использованы, сборка завершилась неудачно.
Что не так?