我正在尝试使用 Docker。
我正在尝试将 apche2 安装到 ubuntu 镜像中。
FROM ubuntu
RUN echo "welcome to yellow pages"
RUN apt-get update
RUN apt-get install -y tzdata
RUN apt-get install -y apache2
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
RUN echo 'Hello, docker' > /var/www/index.html
ENTRYPOINT ["/usr/sbin/apache2"]
CMD ["-D", "FOREGROUND"]
网上找了个引用reference
我添加了“RUN apt-get install -y tzdata”这一行,因为它要求选择 tzdata 并停止创建图像。
现在,当我运行我的图像时,出现以下错误
[Thu Jan 07 09:43:57.213998 2021] [core:warn] [pid 1] AH00111: Config variable ${APACHE_RUN_DIR} is not defined
apache2: Syntax error on line 80 of /etc/apache2/apache2.conf: DefaultRuntimeDir must be a valid directory, absolute or relative to ServerRoot
我是 docker 的新手,理解它对我来说有点困难。
谁能帮我解决这个问题?
最佳答案
这似乎是 Apache 问题,而不是 docker 问题。您的 session 似乎有错误。您有一个名为 DefaultRuntimeDir 的参数,它指向 docker 中不存在的广告目录。检查您的配置文件并确保您在其中指定的目录存在于 docker 中。
您可以通过以下方式在 docker 中运行:
docker build -t my_image_name .
docker run -it --rm --entrypoint /bin/bash my_image_name
# now you are in your docker container, you can check if your directories exist
在不知道你的配置的情况下,我会简单地添加一个 RUN(我制定了这条路径,你可以将其更改为任何你喜欢的)
ENV APACHE_RUN_DIR /var/lib/apache/runtime
RUN mkdir -p ${APACHE_RUN_DIR}
作为旁注,我也会像这样将所有 RUN 合并为一个:
RUN echo "welcome to yellow pages" \
&& apt-get update \
&& apt-get install -y tzdata apache2 \
&& rm -rf /var/lib/apt/lists/* \
&& mkdir -p /var/www \
&& echo 'Hello, docker' > /var/www/index.html
关于amazon-web-services - 当我尝试运行 Docker 文件时抛出错误 "AH00111: Config variable ${APACHE_RUN_DIR} is not defined",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65610053/