Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 828
Psycho Punch Avatar asked Jun 26 '16 06:06

Psycho Punch


2 Answers

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
like image 119
VonC Avatar answered Oct 22 '22 19:10

VonC


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)

like image 37
lucsan Avatar answered Oct 22 '22 20:10

lucsan