无法在两个 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 上提供服务