How do I run Apache 2 on Alpine in Docker?

According to Alpine wiki I have to run rc-service apache2 startafter installation of Apache 2. However, there’s no rc-service in the Alpine running inside the container. How do I get the service command to run inside Docker container?

  • Why does apache2 does not remove pid file on reboot on docker image
  • Export on nodejs alpine docker image is not accepted
  • How to configure the docker file to run cgi-script like perl
  • Certificate exceptions when running Scala SBT on Docker Alpine Linux container
  • how to get logs in docker alipne haprox:1.5 logging
  • alpine linux do not execute compiled nodejs
  • Docker - Execute a bash when running a container
  • Fail over with Docker Compose, two approaches
  • GetClrDbg.sh returned a non-zero code: 1
  • fluentd JSON Parser: get Messages that cannot be parsed
  • Download S3 file to docker image in EBS
  • Docker does not resolve company network: UnknownHostException
  • 2 Solutions collect form web for “How do I run Apache 2 on Alpine in Docker?”

    gliderlabs/docker-alpine issue 183 illustrate the docker Alpine image has no service or rc-service.

    You can see instead nimmis/docker-alpine-apache based on nimmis/docker-alpine-micro, which includes a runit, used to handle starting and shutting down processes automatically started.

    That initd will start the apache2 script, which calls:

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

    Alpine does not have rc-service installed by default. You need to install it (either as part of your Dockerfile build process or manually in the container).

    The secret invocation is:

    apk add openrc --no-cache
    

    If you want to run it from outside the container (say docker run), then use:

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

    PS: rc-service is good for other things and stuff like mariadb (also not included in alpine)

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.