如何构建我的 URL 以从 windows 机器向 linux 机器上容器内的应用程序 运行 发送 GraphQL 请求?

How to frame my URL to send GraphQL request to the application running inside a container on linux machine from windows machine?

我在 AWS 云上分配了一台 linux 机器,我 运行 我的 SpringBoot 应用程序在 docker 容器中 this linux AWS 云上的机器。要从我的 windows 笔记本电脑访问此应用程序的 graphQL 端点,我应该使用什么主机名或 URL? 我该如何装裱它?

一般来说,如果这个应用程序在我的本地是 运行,我会使用类似 http://localhost:8080/graphQL 的东西。

此应用程序的 DockerFile 具有此命令 -> EXPOSE 8080。

我很困惑,因为有一个 linux 机器 ip 地址和容器 ip 地址,我不知道该使用哪个,所以我都尝试了。

在那台 linux 机器上,我在其终端上输入 'ip address',它向我抛出一堆信息,我不确定哪个是我的 IP 地址。

为了获取容器的 IP 地址,我使用了以下命令,它返回了一些地址。我在我的 windows 笔记本电脑上使用了它 https://172.17.5.3:8080/graphql,但它没有返回响应。

    docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}} 
    {{end}}' container_name_or_id

如有任何其他信息,请告诉我。

The DockerFile for this application has this command -> EXPOSE 8080.

EXPOSE 指令实际上没有做任何事情(在这种情况下)。它提供了信息:它告诉您容器将 运行 端口 8080 上的服务。默认情况下,这不会从您的 Docker 主机外部可用。

您可以在启动容器时通过 "publishing" 在 Linux 计算机上公开此端口。您可以使用 docker run--publish (-p) 选项来执行此操作。例如,如果您要像这样启动容器:

docker run -p 8080:8080 ...

假设没有阻止连接的防火墙规则,那么您将能够访问 Linux 机器的 IP 地址或主机名的端口 8080 上的服务。

您可以在 this document.

中阅读更多关于 Docker 端口发布(和一般网络)的信息

On that linux machine I typed 'ip address' on its terminal and it is throwing me bunch of information and I am not sure which one is my ip address.

您通常会使用实例的 public IP 地址。 This document 有关于在 AWS 中使用 public ip 地址的信息。