docker - docker-compose - 在容器 aspnet 核心内部和外部使用 localhost
问题描述
我有 2 个 serviceA 和 serviceB 可以在我的电脑上使用
这些服务也可以相互调用。
现在我想使用 docker-compose
version: '2.4'
services:
servicea:
image: ${DOCKER_REGISTRY-}servicea
ports:
- "5001:5001"
environment:
- ASPNETCORE_URLS=https://host.docker.internal:5001
build:
network: host
context: .
dockerfile: Service1/Dockerfile
serviceb:
image: ${DOCKER_REGISTRY-}serviceb
ports:
- "5002:5002"
environment:
- ASPNETCORE_URLS=https://host.docker.internal:5002
build:
network: host
context: .
dockerfile: Service2/Dockerfile
可以通过 localhost 从我的电脑访问这些服务,但不能从一个容器内部访问另一个容器
如果我登录到 serviceA 容器:
curl --insecure https://host.docker.internal:5002/serviceB
- 在职的curl --insecure https://127.0.0.1:5002/serviceB
- 不工作curl --insecure https://localhost:5002/serviceB
- 不工作(这是我需要的)
我有一个默认的 dotnet core 3.1 api,使用在 wsl2 中运行的 linux 容器和以下默认 dockerfile
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 5001
...
问题:我如何(在容器内)使用 localhost 访问其他容器,并且仍然能够使用 localhost(在 docker 外部)从我的电脑访问容器?
我尝试了设置 ASPNETCORE_URLS 和使用 v3.4 和 network_mode: host 的各种组合,但没有运气。
谢谢你的帮助!
解决方案
您可以为您的服务设置别名并在您的服务中使用它们。或者您可以只使用network_mode: "host"。
推荐阅读
- javascript - AWS Lambda - ValidationException:提供的关键元素与架构不匹配
- html - 使用带有 selenium 的 vba 如何获取表格中的特定单元格然后单击它
- django - 使用 gunicorn 和 nginx 部署 django 应用程序。错误主管:未生成子进程
- asp.net - 了解“System.Net.HttpListenerRequest”处理的异常
- java - 确定事务是否已提交
- java - Java 聊天程序在本地主机上工作,但在 Heroku 上托管时不能
- c# - 如何使用 xunit 和微服务为存储库创建集成测试
- blockchain - 智能合约部署延迟
- php - PHP salesforce/handlebars:是否支持 JS 风格的无哈希非块助手?
- oracle - oracle中基于时间戳的分组