gpt4 book ai didi

docker - 是否可以使用 docker-compose 公开 http 端口?

转载 作者:行者123 更新时间:2023-12-02 19:36:51 25 4
gpt4 key购买 nike

我在我的本地机器上运行 postgres 和 keycloak 图像。这两个图像都配置了公开的端口。但是 docker 机器只通过 TCP 公开端口。所以我能够通过 TCP 连接到 postgres,但无法通过 HTTP 连接到 keycloack 的 localhost:8080。

那么是否可以通过 HTTP 连接到 docker 暴露的端口。

docker-compose.yml

postgres:
image: postgres:9.6.3
volumes:
- ./db/init:/docker-entrypoint-initdb.d
environment:
- POSTGRES_USER=root
- POSTGRES_PASSWORD=root
ports:
- 5432:5432

keycloak:
image: jboss/keycloak-postgres
environment:
- KEYCLOAK_LOGLEVEL=DEBUG
- POSTGRES_DATABASE=user-service
- POSTGRES_USER=root
- POSTGRES_PASSWORD=root
links:
- postgres:postgres
ports:
- "8080:8080"
- "9999:9990"
- "443:8443"
volumes:
- ./data:/data

docker ps

最佳答案

HTTP 是一种建立在 TCP 之上的协议(protocol),因此如果 Docker 通过 TCP(与 UDP 不同,另一种选择)公开一个端口,那么您可以通过 HTTP 连接到该端口,提供了一些可以说话的东西HTTP 正在监听容器内的那个端口。

因此,如果您无法连接到 http://localhost:8080对于上面的 compose 文件,这可能意味着 keycloak 服务要么没有在容器内的端口 8080 上进行任何监听,要么正在监听的内容不使用 HTTP,或者任何正在监听和使用 HTTP 的内容都是出于其他原因拒绝连接。

要完全排除问题出在端口映射或主机上的其他问题,跳到容器内部(使用 docker exec)并尝试从内部连接到 8080;如果你不能,那么你已经确认问题出在容器内运行的任何东西上,而不是任何与 Docker 相关的东西。

关于docker - 是否可以使用 docker-compose 公开 http 端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44073387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com