首页 > 解决方案 > 无法在构建期间使用 docker 在 next.js 中发送请求?

问题描述

我正在尝试将我的getStaticProps函数中的请求从另一个 docker 容器发送到我的后端 api。但是,即使 api url 写入正确,静态页面仍然没有创建。这是因为要构建静态页面,后端应该已经启动,并且由于是构建时间,另一个容器还没有启动并等待构建完成,没有后端就无法完成构建.

那么这种方法的解决方案是什么?我尝试将depends_on值设置为我的另一个容器,但仍然无法正常工作。你会建议什么解决方案?

标签: javascriptdockerdocker-composedockerfilenext.js

解决方案


我能想到2个解决方案。

显然,Next.js 构建失败,因为它正在查询的服务没有运行。因此,为什么不构建并启动它显式依赖的服务并像这样构建其余的服务。

docker-compose build some_services
docker-compose up -d some_services
docker-compose build the_rest

这样,Next.js 应用程序将能够发出请求。请记住,您仍然需要正确配置端口和网络。很确定这将解决问题。

3.4+如果我没记错的话,一个更“花哨”的解决方案是使用在更高版本中添加的构建时网络。

docker-compose.yml

build:
    context: ./service_directory
    network: some_network
   

有关更多详细信息,请参阅Docker-compose 网络


推荐阅读