javascript - 无法在构建期间使用 docker 在 next.js 中发送请求?
问题描述
我正在尝试将我的getStaticProps
函数中的请求从另一个 docker 容器发送到我的后端 api。但是,即使 api url 写入正确,静态页面仍然没有创建。这是因为要构建静态页面,后端应该已经启动,并且由于是构建时间,另一个容器还没有启动并等待构建完成,没有后端就无法完成构建.
那么这种方法的解决方案是什么?我尝试将depends_on
值设置为我的另一个容器,但仍然无法正常工作。你会建议什么解决方案?
解决方案
我能想到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 网络
推荐阅读
- angular - Angular / Firestore - 登录屏幕的路由保护 - 是否可以检查尝试访问路由的用户?
- c# - 如何在移动 Y 轴的物体时平滑地改变 X 物体的位置?
- php - Zend Framework 3 - 基于查询字符串的路由
- java - 如何模拟 lambda 表达式 anymatch 返回对象
- javascript - 当 React JS 中的一项值使用地图函数中的状态发生变化时,如何动态更新购物车中的值?
- c# - C# 实体框架:在选择后获取子项的父项
- java - 服务同时调用两次
- java - 为什么更改屏幕方向时出现 ClassNotFoundException?
- vue.js - 在网络上提供热重载
- android - 当我从活动更改为片段时如何更改工具栏