在 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.
我正在尝试在 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.