AlmaLinux9服务器Docker部署Caddy+PHP+MariaDB访问故障求助
问题排查与解决方案
1. 端口映射有效性检查
先确认Docker Compose中Caddy的端口映射是否正确绑定宿主机端口:
docker compose ps
正常情况下Caddy的端口列应显示0.0.0.0:80->80/tcp和0.0.0.0:443->443/tcp。若不符,修改docker-compose.yaml的Caddy服务配置:
services: caddy: # 其他配置项 ports: - "80:80" - "443:443"
修改后重启Caddy容器:
docker compose up -d --force-recreate caddy
2. 宿主机防火墙端口开放
AlmaLinux 9默认启用firewalld,需手动开放HTTP/HTTPS端口:
firewall-cmd --add-service=http --permanent firewall-cmd --add-service=https --permanent firewall-cmd --reload
验证端口开放状态:
firewall-cmd --list-services
确保输出包含http和https。
3. Caddy配置文件验证
进入caddy_docker目录,检查Caddyfile的基础配置是否正确:
domain.tld { root * /var/www/html php_fastcgi php:9000 # "php"需与docker-compose中PHP服务的名称一致 file_server }
注意:
root路径要和Caddy容器挂载的www目录对应(比如容器内路径是/var/www/html,宿主机映射为./www:/var/www/html)php_fastcgi地址必须指向PHP服务的容器名+9000端口(PHP-FPM默认端口)
验证配置合法性:
docker compose exec caddy caddy validate
若有错误,根据提示修正后重启Caddy:
docker compose restart caddy
4. 本地网络与域名解析检查
- 宿主机本地执行
ss -tulpn | grep :80,确认80端口是否被监听。无输出则说明端口映射未生效或容器未正常启动。 - 执行
nslookup domain.tld,确认域名已正确解析到服务器公网IP。若解析正常仍超时,需检查云服务商控制台是否封禁80/443端口(部分服务商需手动在后台开放)。
5. PHP-FPM与文件权限检查
- 修复宿主机
www目录权限(匹配PHP容器默认用户UID/GID):
chmod -R 755 ./www && chown -R 1000:1000 ./www
- 测试Caddy与PHP-FPM的连通性:
docker compose exec caddy curl -I http://php:9000
若连接失败,查看PHP容器日志排查问题:
docker compose logs php
6. 容器网络连通性检查
确认Caddy和PHP容器处于同一Docker网络:
docker inspect <caddy容器名> | grep Networks docker inspect <php容器名> | grep Networks
若不在同一网络,修改docker-compose.yaml添加专属网络:
networks: lcmp-network: driver: bridge services: caddy: # 其他配置项 networks: - lcmp-network php: # 其他配置项 networks: - lcmp-network
内容的提问来源于stack exchange,提问作者vorpXuser
相关产品推荐
相关产品推荐

