这是我的 Dockerfile:
FROM php:5.5-apache
COPY sites-enabled.tgz /root/sites-enabled.tgz
RUN cd /etc/apache2/sites-enabled && \
tar xvf /root/sites-enabled.tgz
我有许多网站需要配置,我认为配置它们的最简单方法就是将网站的配置文件复制到相应的目录中。不幸的是,我无法这样做。
我执行了docker build -t mywebsite .
,然后docker run -d mywebsite
。这两个命令似乎都运行正常。最后一个命令给了我一个十六进制编码的字符串。但是当我这样做时,docker ps
我没有看到任何机器在运行。
通常,sites-enabled 中的文件是 sites-available 的符号链接。我不知道是否在每种情况下都是如此,但如果是,那么似乎可能需要将 sites-available 站点也复制过去。例如。
FROM php:5.5-apache
COPY sites-available.tgz /root/sites-available.tgz
COPY sites-enabled.tgz /root/sites-enabled.tgz
RUN cd /etc/apache2/sites-available && \
tar xvf /root/sites-available.tgz
RUN cd /etc/apache2/sites-enabled && \
tar xvf /root/sites-enabled.tgz
不幸的是,这也行不通。使用 sites-available.tgz 可以,但使用 sites-enabled.tgz 不行。
有任何想法吗?
答案1
容器会按照你说的做,它会复制文件并放入容器中,然后进入目录,最后解压文件,就这样。你没有声明一个CMD
初始化 apache 的命令,也没有做任何事情,所以除非你这样做,否则你的容器不会保持运行
尝试将其放在 dockerfile 的末尾
CMD /usr/sbin/apache2ctl -D FOREGROUND
让我知道事情的后续