AWS EC2上通过Docker部署Wiki.js无法公网访问问题求助
排查解决方案
- 端口映射与访问规则不匹配是核心问题:你启动容器的参数为
-p 8080:3000,代表将EC2实例本地的8080端口映射到Wiki容器内部的3000端口,日志提示访问3000是容器内部端口,对外暴露的实际端口为8080。你当前安全组仅开放了3000端口,且大概率访问时使用了实例IP:3000,自然无法连通。
两种修复方案二选一即可:- 在EC2绑定的安全组中添加入站规则,开放TCP协议8080端口的公网访问权限,之后直接访问
http://EC2公网IP:8080即可进入配置页 - 删除现有容器后重新启动,将端口映射调整为3000映射3000,适配已开放的安全组规则,操作命令如下:
docker rm -f wiki docker run -d -p 3000:3000 --name wiki --restart unless-stopped -e "DB_TYPE=mysql" -e "DB_HOST=172.0.0.1" -e "DB_PORT=3306" -e "DB_USER=wikijs" -e "DB_PASS=wikijsrocks" -e "DB_NAME=wiki" requarks/wiki:2
- 在EC2绑定的安全组中添加入站规则,开放TCP协议8080端口的公网访问权限,之后直接访问
- 调整后仍无法访问可继续排查以下项:
- 检查VPC关联的网络ACL规则,确认没有拦截8080/3000端口的入站、出站流量,默认VPC网络ACL为全开放,自定义ACL需手动添加允许规则
- 登录EC2实例执行
ss -tulnp | grep 对应端口号,确认端口处于正常监听状态,同时排查实例本地的iptables、firewalld规则是否拦截了对应端口的公网访问 - 确认访问时使用的是EC2的公网IP/公网域名,私有IP仅支持同VPC内网环境访问
- 你填写的数据库地址
172.0.0.1存在配置错误,正确的本地回环地址为127.0.0.1,如果后续出现数据库连接失败问题,可将DB_HOST修改为EC2的私有IP,或使用--link参数关联数据库容器解决容器内网络互通问题
内容的提问来源于stack exchange,提问作者nidhi_007
相关产品推荐
相关产品推荐

