Windows 11下Docker外部端口映射失败,DummyService无法访问求助
问题修复建议
核心问题:容器启动命令被覆盖
你的Docker Compose配置中,dummyservice服务的command字段会覆盖Dockerfile里定义的CMD指令。当前容器启动后只会执行composer install --ignore-platform-reqs,执行完成后容器就会退出,根本没有启动Laravel的内置服务器,所以外部无法通过8020端口访问服务。
修复步骤
1. 调整Docker Compose的command配置
将dummyservice的command改为启动服务的复合命令,或者直接移除该字段(让容器使用Dockerfile里的CMD):
services: dummyservice: # ... 其他配置保持不变 command: > sh -c "composer install --ignore-platform-reqs && php artisan serve --host=0.0.0.0" # 若镜像构建时已完成依赖安装,也可直接删除command字段,依赖Dockerfile的CMD启动服务
2. 验证容器运行状态
执行以下命令检查容器是否持续运行:
docker-compose ps
若dummyservice状态显示Up,说明服务正常运行;若为Exited,则需重新检查command配置。
3. 确认端口映射生效
执行以下命令查看容器端口绑定情况:
docker-compose port dummyservice 8000
正常输出应为0.0.0.0:8020或[::]:8020,表示端口映射已生效。
4. 排查容器内部服务状态
进入容器内部,验证Laravel服务是否正常启动:
docker-compose exec dummyservice curl http://localhost:8000
若能返回Laravel默认页面,说明容器内服务正常,问题出在外部网络访问;若不能,则需检查Laravel项目配置是否正确。
5. 确认外部网络存在
执行docker network ls查看列表中是否存在dummynetwork,若不存在则创建:
docker network create dummynetwork
内容的提问来源于stack exchange,提问作者NotABot
相关产品推荐
相关产品推荐

