首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >多个停靠-组合:错误:从前端到后端的getaddrinfo EAI_AGAIN

多个停靠-组合:错误:从前端到后端的getaddrinfo EAI_AGAIN
EN

Stack Overflow用户
提问于 2022-11-13 18:42:42
回答 3查看 107关注 0票数 0

我有两个分开的文件夹,一个用于后端,一个用于前端服务:

  • 后端/docker-Compose.yml
  • 前端/码头-复合设备

后端在wordpress上安装了一个无头的nginx,其作用域可以作为api服务提供给前端。前端运行在next.js上。以下是两个不同的docker-compose.yml

backend/docker-compose.yml

代码语言:javascript
运行
复制
version: '3.9'

services:
  nginx:
    image: nginx:latest
    container_name: my-app-nginx
    ports:
      - '80:80'
      - '443:443'
      - '8080:8080'
    ...
    networks:
      - internal-network

  mysql:
    ...
    networks:
      - internal-network

  wordpress:
    ...
    networks:
      - internal-network

networks:
  internal-network:
    external: true

frontend/docker-compose.yml

代码语言:javascript
运行
复制
version: '3.9'

services:
  nextjs:
    build:
      ...
    container_name: my-app-nextjs
    restart: always
    ports:
      - 3000:3000
    networks:
      - internal-network
  
networks:
  internal-network:
    driver: bridge
    name: internal-network

在前端,我在fetch中使用nextjs api,如下所示:

代码语言:javascript
运行
复制
fetch('http://my-app-nginx/wp-json/v1/enpoint', ...)

我还尝试了端口808080,但没有成功。

我运行的命令顺序如下:

  • docker network create internal-network
  • backend/文件夹中,docker-compose up -d (所有后端容器运行良好,我可以从WordPress api中用邮递员获取数据)
  • frontend/ folder中,错误Error: getaddrinfo EAI_AGAIN my-app-nginx导致docker-compose up -d失败。

我不是一个非常专业的docker用户,所以我可能在这里遗漏了一些东西,但我知道容器上可能存在内部网络问题。我读了很多关于这个话题的答案,但我想不出来。

有什么建议吗?

EN

回答 3

Stack Overflow用户

发布于 2022-11-17 17:24:05

只是为了补充一个正确的答案:

  • 通常,您不应该真的希望执行多个docker-compose up -d命令。
  • 如果您想要组合两个独立的docker-组合信任并作为一个(稍微好一点)运行,可以使用extends关键字,如文档中所描述的那样。

但是,我建议您将它作为一个可以拥有多个嵌套git存储库的单个docker-组合项目来处理:

使用验证此方法的应用程序进行备份的实际工作示例:

票数 1
EN

Stack Overflow用户

发布于 2022-11-21 15:15:59

我在这里找到了这条线多个码头组合项目之间的通信

通过查看投票最多的答案,我想知道它是否与网络前缀有关?

似乎内部网络会以frontend_作为前缀?另一方面,您也可以尝试在后端/docker-Compose.yml中按名称定位网络:

代码语言:javascript
运行
复制
networks:
  internal-network:
    external: 
      name: internal-network
票数 1
EN

Stack Overflow用户

发布于 2022-11-22 18:27:37

问题是外部网络需要指定的网络名称(因为默认情况下,docker组合前缀资源)。后端停靠程序撰写网络部分应该如下所示:

代码语言:javascript
运行
复制
networks:
  internal-network:
    name: internal-network
    external: true

您正在您的前端停靠器中创建网络,因此您应该省略docker network create ...命令(只需要先插入前端)。或者将它们都看作是外部的,并保留命令。其中也使用前面的停靠器中显示的命名外部网络。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74423732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档