我有两个分开的文件夹,一个用于后端,一个用于前端服务:
后端在wordpress
上安装了一个无头的nginx
,其作用域可以作为api服务提供给前端。前端运行在next.js
上。以下是两个不同的docker-compose.yml
backend/docker-compose.yml
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
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,如下所示:
fetch('http://my-app-nginx/wp-json/v1/enpoint', ...)
我还尝试了端口80
和8080
,但没有成功。
我运行的命令顺序如下:
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
用户,所以我可能在这里遗漏了一些东西,但我知道容器上可能存在内部网络问题。我读了很多关于这个话题的答案,但我想不出来。
有什么建议吗?
发布于 2022-11-17 17:24:05
只是为了补充一个正确的答案:
docker-compose up -d
命令。extends
关键字,如文档中所描述的那样。但是,我建议您将它作为一个可以拥有多个嵌套git存储库的单个docker-组合项目来处理:
使用验证此方法的应用程序进行备份的实际工作示例:
发布于 2022-11-21 15:15:59
我在这里找到了这条线多个码头组合项目之间的通信
通过查看投票最多的答案,我想知道它是否与网络前缀有关?
似乎内部网络会以frontend_作为前缀?另一方面,您也可以尝试在后端/docker-Compose.yml中按名称定位网络:
networks:
internal-network:
external:
name: internal-network
发布于 2022-11-22 18:27:37
问题是外部网络需要指定的网络名称(因为默认情况下,docker组合前缀资源)。后端停靠程序撰写网络部分应该如下所示:
networks:
internal-network:
name: internal-network
external: true
您正在您的前端停靠器中创建网络,因此您应该省略docker network create ...
命令(只需要先插入前端)。或者将它们都看作是外部的,并保留命令。其中也使用前面的停靠器中显示的命名外部网络。
https://stackoverflow.com/questions/74423732
复制相似问题