Linux系统下Docker部署的phpmyadmin无法访问/var/www目录问题
问题原因
你当前访问的Apache服务运行在phpMyAdmin的Docker容器内部,容器文件系统和宿主机相互隔离,默认情况下容器内的/var/www目录不存在你要访问的内容,且官方phpMyAdmin镜像的Apache站点根目录默认指向/usr/share/phpmyadmin,而非/var/www,所以直接访问对应路径会触发404报错。
解决方法
方法1:仅需要使用phpMyAdmin
直接访问http://localhost/index.php即可进入phpMyAdmin登录页面,不需要访问/var/www路径下的内容。
方法2:需要同时访问宿主机/var/www下的自定义项目和phpMyAdmin
需要在启动phpmyadmin容器时添加目录挂载,将宿主机的/var/www目录映射到容器内Apache可识别的路径下,操作步骤如下:
- 先停止当前运行的phpmyadmin容器:
docker stop phpmyadmin - 删除原有容器(不会丢失phpMyAdmin的核心配置,仅删除容器实例):
docker rm phpmyadmin - 重新启动容器,添加挂载参数,这里将宿主机
/var/www映射到容器内的/var/www/html目录,同时保留phpMyAdmin的访问能力:docker run -d --name phpmyadmin -p 80:80 -v /var/www:/var/www/html -e PMA_HOST=你的数据库主机地址 phpmyadmin
注意替换命令中的你的数据库主机地址为你实际连接的数据库IP或域名,若数据库也运行在Docker容器中可填对应容器的名称 - 启动完成后,访问
http://localhost/你要访问的目录名即可打开宿主机/var/www下的对应项目,访问http://localhost/phpmyadmin即可进入数据库管理页面。
方法3:使用独立的Web服务容器运行项目,phpMyAdmin单独映射端口
如果不想改动原有phpmyadmin容器的配置,可以另外启动一个Apache或Nginx容器专门运行/var/www下的项目,将phpmyadmin容器的端口映射为其他端口比如8080,避免端口冲突:
- 修改phpmyadmin容器的端口映射:
docker run -d --name phpmyadmin -p 8080:80 -e PMA_HOST=你的数据库主机地址 phpmyadmin - 单独启动Web服务容器挂载
/var/www目录映射到80端口即可,两个服务互不干扰。
内容的提问来源于stack exchange,提问作者Nanda Fitra
相关产品推荐
相关产品推荐

