如何从Docker容器访问本地别名域名mydomain.com?
解决方案
1. 通过extra_hosts配置容器内域名解析
在你的docker-compose.yml的server服务中添加extra_hosts字段,将mydomain.com映射到Docker提供的宿主机别名host.docker.internal:
version: '3.8' services: nginx: container_name: project-nginx image: nginx:1.23.1-alpine volumes: - ./docker/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf - ./src:/app ports: - ${NGINX_PORT:-81}:80 depends_on: - project server: container_name: project build: context: ./ environment: NODE_MODE: service APP_ENV: local APP_DEBUG: 1 ALLOWED_ORIGINS: ${ALLOWED_ORIGINS:-null} volumes: - ./src:/app # 添加域名映射配置 extra_hosts: - "mydomain.com:host.docker.internal"
修改后重启容器,此时容器内请求mydomain.com会被解析到宿主机,即可访问你本地80端口的服务。
2. 排查host.docker.internal访问404的问题
若直接请求host.docker.internal出现404,通常是因为你本地的服务器仅绑定了127.0.0.1(仅允许localhost访问),而非0.0.0.0(允许所有IP访问)。需要修改本地服务器的监听配置,将监听地址改为0.0.0.0:80,确保宿主机的外部IP(包括host.docker.internal指向的IP)能正常访问服务。
3. 关于network_mode: "host"的问题
Windows版Docker Desktop基于WSL2架构,host网络模式在Docker Compose多服务场景下存在兼容性限制,会导致启动失败,因此不建议使用该方式解决问题。
内容的提问来源于stack exchange,提问作者Kostya GL
相关产品推荐
相关产品推荐

