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

Posted

技术标签:

【中文标题】如何在 Docker 中的 Alpine 上运行 Apache 2?【英文标题】:How do I run Apache 2 on Alpine in Docker? 【发布时间】:2016-10-28 09:23:30 【问题描述】:

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

【问题讨论】:

这不是一个重复的问题,但仍然相关。感谢您注意到这一点。 【参考方案1】:

gliderlabs/docker-alpine issue 183 说明 docker Alpine 镜像没有servicerc-service

您可以看到基于nimmis/docker-alpine-micronimmis/docker-alpine-apache,其中包括一个runit,用于处理自动启动和关闭进程。

该 initd 将启动 apache2 script,它调用:

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

【讨论】:

【参考方案2】:

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

秘密调用是:

apk add openrc --no-cache

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

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

PS:rc-service 对其他东西和 mariadb 之类的东西有好处(也不包括在 alpine 中)

【讨论】:

令人印象深刻。我不知道默认情况下没有安装rc。感谢提及。

以上是关于如何在 Docker 中的 Alpine 上运行 Apache 2?的主要内容,如果未能解决你的问题,请参考以下文章

如何让 /etc/profile 在 Alpine / Docker 中自动运行

在 alpine docker 容器上运行 selenium 测试时出错

如何在 Alpine Docker 容器中运行 Bash 脚本?

Go 编译的二进制文件不会在 Ubuntu 主机上的 alpine docker 容器中运行

如何在 docker 的官方 php-fpm-alpine 镜像上安装 XDebug?

如何在alpine:3.6 Docker容器中指定静态(非DHCP)DNS?