首页 > 解决方案 > 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 容器:

我有一个默认的 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 的各种组合,但没有运气。

谢谢你的帮助!

标签: dockerasp.net-core.net-coredocker-compose

解决方案


您可以为您的服务设置别名并在您的服务中使用它们。或者您可以只使用network_mode: "host"


推荐阅读