bitnami/apacheBitnami Apache 镜像是基于 Apache HTTP Server 的容器化部署方案。Apache HTTP Server 是一款开源的 HTTP 服务器,旨在提供安全、高效且可扩展的 HTTP 服务,符合当前 HTTP 标准。Bitnami 镜像通过安全加固、标准化配置和简化部署流程,适用于开发、测试及生产环境中的静态网站托管、反向代理和 Web 服务前端等场景。
consoledocker run --name apache bitnami/apache:latest
配置选项详见 环境变量 部分。
自 2025 年 8 月 28 日起,Bitnami 将升级其公共镜像目录,通过新的 Bitnami Secure Images 计划 提供精选的安全加固镜像。过渡期安排如下:
更多详情参见 Bitnami Secure Images 公告。
推荐通过 Docker Hub 获取预构建镜像:
console# 获取最新版 docker pull bitnami/apache:latest # 获取特定版本(需替换 [TAG],如 2.4.58) docker pull bitnami/apache:[TAG]
如需自定义构建,可克隆源码仓库并执行构建命令:
consolegit clone [***] cd bitnami/apache/[VERSION]/[操作系统] # 替换版本和操作系统(如 2.4/debian-12) docker build -t bitnami/apache:latest .
容器默认将 /app 目录配置为 Apache 的 DocumentRoot(文档根目录),挂载本地静态文件至该目录即可提供服务。
consoledocker run --name apache \ -p 8080:8080 -p 8443:8443 \ # 映射 HTTP/HTTPS 端口(容器内默认 8080/8443) -v /本地静态文件路径:/app \ # 挂载本地静态文件到容器 /app bitnami/apache:latest
yamlversion: '2' services: apache: image: bitnami/apache:latest ports: - "80:8080" # 主机 80 端口映射到容器 HTTP 端口 - "443:8443" # 主机 443 端口映射到容器 HTTPS 端口 volumes: - /本地静态文件路径:/app # 挂载静态文件 restart: unless-stopped
注意:由于容器以非 root 用户(UID 1001)运行,挂载的文件和目录需确保该用户有读权限。
使用 -P 选项让 Docker 随机映射容器端口,通过 docker port 查看映射关系:
consoledocker run --name apache -P bitnami/apache:latest docker port apache # 输出示例:8080/tcp -> 0.0.0.0:32769
手动指定主机与容器端口映射(推荐生产环境使用):
consoledocker run --name apache \ -p 80:8080 \ # 主机 80 端口 -> 容器 HTTP 端口 -p 443:8443 \ # 主机 443 端口 -> 容器 HTTPS 端口 bitnami/apache:latest
访问 http://localhost:80 或 https://localhost:443 即可打开网站。
可定制环境变量
| 变量名 | 描述 | 默认值 |
|---|---|---|
APACHE_HTTP_PORT_NUMBER | Apache HTTP 服务端口号 | nil |
APACHE_HTTPS_PORT_NUMBER | Apache HTTPS 服务端口号 | nil |
APACHE_SERVER_TOKENS | Apache ServerTokens 指令值 | Prod |
只读环境变量(运行时自动设置)
| 变量名 | 描述 | 值 |
|---|---|---|
WEB_SERVER_TYPE | Web 服务器类型 | apache |
APACHE_BASE_DIR | Apache 安装目录 | ${BITNAMI_ROOT_DIR}/apache |
APACHE_CONF_DIR | 配置文件目录 | ${APACHE_BASE_DIR}/conf |
APACHE_VHOSTS_DIR | 虚拟主机配置目录 | ${APACHE_CONF_DIR}/vhosts |
APACHE_HTDOCS_DIR | 默认文档根目录 | ${APACHE_BASE_DIR}/htdocs |
APACHE_LOGS_DIR | 日志文件目录 | ${APACHE_BASE_DIR}/logs |
APACHE_CONF_FILE | 主配置文件路径 | ${APACHE_CONF_DIR}/httpd.conf |
APACHE_DEFAULT_HTTP_PORT_NUMBER | 默认 HTTP 端口(构建时设置) | 8080 |
APACHE_DEFAULT_HTTPS_PORT_NUMBER | 默认 HTTPS 端口(构建时设置) | 8443 |
通过 -e 参数或 Docker Compose environment 字段设置环境变量:
consoledocker run --name apache \ -p 80:8081 -p 443:8443 \ -e APACHE_HTTP_PORT_NUMBER=8081 \ # 自定义 HTTP 端口为 8081 bitnami/apache:latest
Docker Compose 配置:
yamlversion: '2' services: apache: image: bitnami/apache:latest ports: - "80:8081" - "443:8443" environment: - APACHE_HTTP_PORT_NUMBER=8081 # 自定义 HTTP 端口
Apache 主配置默认包含 /opt/bitnami/apache/conf/vhosts/ 目录下的所有 .conf 文件,通过挂载虚拟主机配置文件至 /vhosts 目录即可生效。
步骤 1:创建虚拟主机配置文件(如 my_vhost.conf)
apache<VirtualHost *:8080> ServerName [***] # 域名 DocumentRoot "/app/example" # 该域名的文档根目录 <Directory "/app/example"> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>
步骤 2:挂载配置文件启动容器
consoledocker run --name apache \ -v /本地路径/my_vhost.conf:/vhosts/my_vhost.conf:ro \ # 只读挂载虚拟主机配置 -v /本地/example网站文件:/app/example \ # 挂载网站文件 bitnami/apache:latest
容器默认使用 /certs 目录下的 tls.crt(证书)和 tls.key(私钥)。替换为自定义证书步骤如下:
步骤 1:准备证书文件
将自定义证书重命名为 server.crt 和 server.key,存放于本地目录(如 /path/to/certs):
consolemkdir -p /path/to/certs cp /本地证书路径.crt /path/to/certs/server.crt cp /本地私钥路径.key /path/to/certs/server.key
步骤 2:挂载证书目录启动容器
consoledocker run --name apache \ -v /path/to/certs:/certs \ # 挂载证书目录至容器 /certs bitnami/apache:latest
如需完全自定义 Apache 配置,可直接挂载主配置文件 httpd.conf:
consoledocker run --name apache \ -v /本地/httpd.conf:/opt/bitnami/apache/conf/httpd.conf \ # 覆盖主配置 bitnami/apache:latest
安全加固镜像支持 FIPS 模式,通过环境变量 OPENSSL_FIPS 控制:
OPENSSL_FIPS=yes:启用 FIPS 模式(默认)OPENSSL_FIPS=no:禁用 FIPS 模式配置示例:
consoledocker run --name apache \ -e OPENSSL_FIPS=no \ # 禁用 FIPS 模式 bitnami/apache:latest
Apache 可通过 mod_proxy 模块实现反向代理,转发请求至其他容器服务。示例配置(添加至虚拟主机配置或主配置):
apache<VirtualHost *:8080> ServerName api.example.com ProxyPass / [***] # 转发至后端服务(需通过 Docker 网络连接) ProxyPassReverse / [***] </VirtualHost>
容器将 Apache 日志输出至 stdout,可通过 docker logs 命令查看:
consoledocker logs apache # 查看实时日志 docker logs -f apache # 持续输出日志
Docker Compose 环境:
consoledocker-compose logs apache
如需扩展镜像功能(如安装工具、修改配置),可基于官方镜像构建自定义镜像。示例 Dockerfile:
dockerfileFROM bitnami/apache # 切换至 root 用户执行特权操作 USER 0 # 安装 vim 编辑器(需使用镜像内置包管理器) RUN install_packages vim # 切换回非 root 用户 USER 1001 # 启用 mod_ratelimit 模块 RUN sed -i -r 's/#LoadModule ratelimit_module/LoadModule ratelimit_module/' /opt/bitnami/apache/conf/httpd.conf # 自定义默认 HTTP 端口(运行时可通过环境变量覆盖) ENV APACHE_HTTP_PORT_NUMBER=8181 EXPOSE 8181 8443
consoledocker pull bitnami/apache:latest
consolersync -a /path/to/挂载数据 /path/to/备份目录_$(date +%Y%m%d-%H%M%S)
consoledocker stop apache && docker rm apache
consoledocker run --name apache \ -v /path/to/数据:/app \ # 挂载备份的数据 bitnami/apache:latest
tls.crt/tls.key(原 server.crt/server.key),适配 Kubernetes tls 密钥类型。/bitnami/apache,日志仅输出至 stdout。本镜像基于 Apache License 2.0 许可协议。详见 LICENSE。
商标说明:本镜像由 Bitnami 打包,提及的商标分属各自所有者,不代表关联或背书。

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务