我正在试用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"]
我在网上找到了一个参考
我添加了这行";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的问题。您的conf似乎有错误。您有一个名为DefaultRuntimeDir的参数,它指向的是docker中不存在的ad目录。查看您的配置文件,并确保您在其中指定的目录存在于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