我有两个独立的docker文件,一个用于在nginx web服务器上运行nextjs,另一个用于在另一个nginx上运行Laravel:
services:
frontendx:
container_name: next_appx
build:
context: ./frontend
dockerfile: Dockerfile
restart: unless-stopped
volumes:
- ./frontend:/var/www/html/frontend
networks:
- app
nginxy:
container_name: nginxy
image: nginx:1.19-alpine
restart: unless-stopped
ports:
- '8080:80'
volumes:
- ./frontend:/var/www/html/frontend
- ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf
depends_on:
- frontendx
networks:
- app以及:
services:
backendx:
container_name: laravelx
build:
context: .
dockerfile: Dockerfile
restart: unless-stopped
ports:
- '8000:8000'
volumes:
- ./:/var/www
- enlive-vendor:/var/www/vendor
- .//docker-xdebug.ini:/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
depends_on:
- dbx
networks:
- appx
webserverx:
image: nginx:alpine
container_name: webserverx
restart: unless-stopped
tty: true
ports:
- "8090:80"
- "443:443"
volumes:
- ./:/var/www
- ./nginx/conf.d/:/etc/nginx/conf.d/
networks:
- appx我可以通过axios连接到后端容器,地址如下:http://localhost:8090/api/my/api/address
但是,当我试图通过getStaticProps获取数据时,我得到了ECONNREFUSED连接错误:
const res = await fetch(`http://localhost:8090/api/address`)我试图用容器ip地址替换本地主机,比如: 172.20.0.2,但是我得到了504 Gateway错误。
发布于 2022-08-19 22:33:39
这是意料之中的。
使用axios,您从从主机网络发出请求的浏览器调用。
但是getStaticProps是一个SSR函数,运行在您的nextjs容器中。因此,它必须能够在app网络中找到您的后端。
现在通过您的设置,前端和后端应用程序在不同的孤立网络中,您不能这样连接它们。但是,如果将所有服务都放在同一个网络中,假设您的app(而不是appx)网络,您可以很容易地使用docker:
const res = await fetch(`http://webserverx/api/address`)Docker知道如何将webserverx解析为您的webserverx容器。
https://stackoverflow.com/questions/73421830
复制相似问题