在 Docker 容器内自动启动服务

Start service automatic inside Docker container

我正在尝试在 Docker 容器中自动启动类似 Apache2 的服务

My Dockerfile:
FROM ubuntu:14.04

RUN apt-get update
RUN apt-get -y install apache2
ADD ./startup.sh /opt/startup.sh
RUN chmod +x /opt/startup.sh
CMD ["/bin/bash", "/opt/startup.sh"]
RUN /opt/startup.sh

My startup.sh:
#!/bin/bash
service apache2 start

但 Apache2 并未在容器中自动启动。

容器本身无法启动您习惯的传统意义上的服务,例如。通过使用 upstart 或 systemd。所以你只需要手动启动apache...

FROM ubuntu:14.04
RUN apt-get update
RUN apt-get -y install apache2

EXPOSE 80 443
ENTRYPOINT ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]

请记住,当您启动容器时,您需要使用 -p 参数正确映射端口。 dockerfile 不处理任何 VOLUMES,这只是安装 apache2 并启动它。如果您需要了解它们的工作原理,则需要查阅 Dockerfile Reference.