如何使自定义 docker 镜像可以定义 ENV 变量

如何使自定义 docker 镜像可以定义 ENV 变量

我已经创建了一个包含 vhosts 配置的自定义自制 docker 镜像,如何在运行容器时在 ENV 中定义类似ServerName的变量。DocumentRoot

谢谢,非常感谢大家的回答

答案1

您可以${APACHE_DOCUMENT_ROOT}在 Apache 配置文件中使用该符号。

我拿了来自这个未回答的问题的例子

<VirtualHost _default_:80>
  ServerSignature Off

  ErrorLog ${APACHE_LOG_DIR}/000-default-error.log
  CustomLog ${APACHE_LOG_DIR}/000-default-access.log combined

  DocumentRoot ${APACHE_DOCUMENT_ROOT}

  <Directory ${APACHE_DOCUMENT_ROOT}>
    Options FollowSymLinks
    AllowOverride all
    Require all granted
  </Directory>
</VirtualHost>

一个非常基本的 Dockerfile:

FROM httpd:2.4
COPY *.conf /usr/local/apache2/conf/

然后我启动了构建的容器:

mkdir {log,htdocs}
echo "hi" > htdocs/index.html
docker run -d --rm 
  -e APACHE_LOG_DIR=/var/log/apache2 \
  -e APACHE_DOCUMENT_ROOT=/var/www/htdocs/ 
  -v $PWD/htdocs:/var/www/htdocs 
  -v $PWD/log:/var/log/apache2/ 
  -P httpd:test

并且它有效。

$ curl http://localhost:32768/
hi
$ ls -l log/
total 4
-rw-r--r-- 1 root root 85 Oct  7 15:06 000-default-access.log
-rw-r--r-- 1 root root  0 Oct  7 15:05 000-default-error.log

相关内容