You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署分离PHP/PHPMyAdmin镜像,如何通过localhost/phpmyadmin访问?

解决方法

你的Apache配置存在两个关键问题:ServerName不能包含路径,且反向代理的目标地址配置有误。以下是正确的配置步骤:

1. 启用Apache必要模块

确保Apache已启用代理相关模块,执行以下命令:

a2enmod proxy proxy_http rewrite

2. 修改Apache配置

情况1:Apache是宿主机服务(非Docker容器)

如果你的Apache运行在宿主机上,将反向代理目标指向宿主机的8080端口:

<VirtualHost *:80>
    ServerName localhost

    # 配置phpMyAdmin反向代理
    ProxyPass /phpmyadmin http://localhost:8080/
    ProxyPassReverse /phpmyadmin http://localhost:8080/

    # 保留原有指向PHP服务的配置(比如DocumentRoot等)
</VirtualHost>

情况2:Apache是Docker容器(和其他服务在同一Compose网络)

如果Apache包含在你的php服务中(即PHP服务基于Apache镜像),直接通过Docker服务名访问phpmyadmin容器:

<VirtualHost *:80>
    ServerName localhost

    # 配置phpMyAdmin反向代理
    ProxyPass /phpmyadmin http://phpmyadmin:80/
    ProxyPassReverse /phpmyadmin http://phpmyadmin:80/

    # 原有PHP服务的配置
</VirtualHost>

也可以不用修改VirtualHost,直接在Apache全局配置中添加Location规则:

<Location "/phpmyadmin">
    ProxyPass http://phpmyadmin:80/
    ProxyPassReverse http://phpmyadmin:80/
</Location>

3. 重启Apache服务

配置修改后,重启Apache使生效:

systemctl restart apache2

关键说明

  • ServerName仅能设置主机名/域名,不能包含/phpmyadmin这类路径,这是你之前配置失效的核心原因之一。
  • 反向代理路径末尾的/必须保留,避免phpMyAdmin内部路径跳转出现错误。
  • 如果Apache和phpmyadmin不在同一网络(比如Apache在宿主机),必须使用宿主机的localhost:8080作为目标地址;若在同一Docker网络,直接使用服务名phpmyadmin即可访问容器的80端口。

内容的提问来源于stack exchange,提问作者Ralph

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 11:15:58