如何在Docker上运行Alpine的Apache 2?

根据Alpine wiki,我必须在安装Apache 2之后运行rc-service apache2 start 。但是,在容器内运行的Alpine中没有rc-service 。 如何让服务命令在Docker容器中运行?

gliderlabs/docker-alpine问题183说明docker高山形象没有servicerc-service

你可以看到nimmis/docker-alpine-apache基于nimmis/docker-alpine-micro ,它包含一个runit,用于处理启动和closures进程自动启动。

该initd将启动apache2脚本 ,该脚本调用:

 exec /usr/sbin/httpd -D FOREGROUND -f /web/config/httpd.conf 

Alpine没有默认安装rc-service。 您需要安装它(作为您的Dockerfile构build过程的一部分或手动在容器中)。

秘密调用是:

 apk add openrc --no-cache 

如果你想从容器外部运行它(比如docker run),那么使用:

 docker run [options etc] bin/ash -c "apk add openrc --no-cache" 

PS:RC服务是有利于其他东西,像mariadb(也不包括在高山)