无法在两个 Laravel Docker 容器之间发出 HTTP 请求
Cannot make an HTTP request between two Laravel Docker containers
首先让我声明,我知道这个问题已经在许多论坛上提出过。我都看过了。
我有两个 Docker 容器,它们是用 docker-compose 构建的,每个容器包含一个 Laravel 项目。它们都连接到网络并且可以成功地相互 ping 通,但是,当我从 Postman 向一个后端发出请求然后向另一个后端发出 curl 请求时,我收到如下所示的连接被拒绝错误。
这是我的docker-为每个项目编写的文件:
version: '3.8'
services:
bumblebee:
build:
context: .
dockerfile: Dockerfile
volumes:
- .:/app
networks:
- picknpack
ports:
- "8010:8000"
networks:
picknpack:
external: true
version: '3.8'
services:
optimus:
build:
context: .
dockerfile: Dockerfile
volumes:
- .:/app
ports:
- "8020:8000"
networks:
- picknpack
depends_on:
- optimus_db
optimus_db:
image: mysql:8.0.25
environment:
MYSQL_DATABASE: optimus
MYSQL_USER: test
MYSQL_PASSWORD: test1234
MYSQL_ROOT_PASSWORD: root
volumes:
- ./storage/dbdata:/var/lib/mysql
ports:
- "33020:3306"
networks:
picknpack:
external: true
这里可以看到ping成功:
我很乐意继续处理配置文件,但我有一个截止日期,但没有任何工作,我们将不胜感激。
编辑
请看网络检查:
在我创建的 docker 网络中,根据它们的 Dockerfile,两个容器都暴露在端口 8000 上。它直勾勾地看着我:'Connection refused on port 80'。 HTTP 客户端使用它作为默认值而不是 8000。我更新了 curl 请求以命中端口 8000,它现在可以工作了。感谢@user3532758 的帮助。请注意,容器映射到外部本地网络中的端口 8010 和 8020,而不是 docker 网络中的端口。它们都在具有不同 IP 的端口 8000 上提供服务
首先让我声明,我知道这个问题已经在许多论坛上提出过。我都看过了。
我有两个 Docker 容器,它们是用 docker-compose 构建的,每个容器包含一个 Laravel 项目。它们都连接到网络并且可以成功地相互 ping 通,但是,当我从 Postman 向一个后端发出请求然后向另一个后端发出 curl 请求时,我收到如下所示的连接被拒绝错误。
这是我的docker-为每个项目编写的文件:
version: '3.8'
services:
bumblebee:
build:
context: .
dockerfile: Dockerfile
volumes:
- .:/app
networks:
- picknpack
ports:
- "8010:8000"
networks:
picknpack:
external: true
version: '3.8'
services:
optimus:
build:
context: .
dockerfile: Dockerfile
volumes:
- .:/app
ports:
- "8020:8000"
networks:
- picknpack
depends_on:
- optimus_db
optimus_db:
image: mysql:8.0.25
environment:
MYSQL_DATABASE: optimus
MYSQL_USER: test
MYSQL_PASSWORD: test1234
MYSQL_ROOT_PASSWORD: root
volumes:
- ./storage/dbdata:/var/lib/mysql
ports:
- "33020:3306"
networks:
picknpack:
external: true
这里可以看到ping成功:
我很乐意继续处理配置文件,但我有一个截止日期,但没有任何工作,我们将不胜感激。
编辑
请看网络检查:
在我创建的 docker 网络中,根据它们的 Dockerfile,两个容器都暴露在端口 8000 上。它直勾勾地看着我:'Connection refused on port 80'。 HTTP 客户端使用它作为默认值而不是 8000。我更新了 curl 请求以命中端口 8000,它现在可以工作了。感谢@user3532758 的帮助。请注意,容器映射到外部本地网络中的端口 8010 和 8020,而不是 docker 网络中的端口。它们都在具有不同 IP 的端口 8000 上提供服务