我是Docker和Fly.io的新手,我试图托管一个非常基本的NodeJS后端,但遇到了错误.你可以看到我的回购here.在本地,我向backend/添加了一个Dockerfile,如下所示:

FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
COPY . .
EXPOSE 5000
CMD ["node", "app.js"]

然后,在WSL2中,我跑了docker build .docker run -dp 5000:5000 [image ID].后端在localhost:5000处显示,并且将数据正确地馈送到前端.

但当我跑到flyctl launch分时,它会一直给我Error failed to fetch an image or build from source: error building: error during connect: Post "http://[a very long URL]": EOF分.

有人建议自动生成的fly.toml缺省为internal_port = 8080是问题所在,所以我try 将其更改为将Express和Docker与5000匹配,但得到了相同的错误.

以防万一:我的互联网连接不好,我不知道这是否可能是问题所在--超时?

有人能帮我吗??

推荐答案

我能够解决这个问题,我把它张贴在这里,给我看到有同样问题的其他人.

  • 我读到你在app.listen中需要一个主机‘0.0.0.0’,所以它在那里(没有解决我的问题,但可能是其他人的问题)
  • 销毁了苍蝇try 的构建
  • 已删除fly.toml
  • 删除了Docker容器和镜像
  • 在我的项目中将我的后端端口更改为8080(无论Dockerfile怎么说,自动生成的fly.toml都是internal_port = 8080)
  • 重新制作了Docker容器和图像
  • 再跑flyctl launch

我的猜测是,问题在于仅将在构建失败期间创建的fly.toml文件中的5000更改为8080是不够的.它需要从一开始就是正确的.

Node.js相关问答推荐

如何在node.js中以随机顺序调用函数并按顺序操作

错误:找不到模块';/var/apps/前端/bash';

使用NodeJS输出检索Base64图像的网络报废

JEST模拟由http服务器控制器导入的ES模块

表达 js 错误处理程序在第一个之后被忽略

如何使用对象中的常量值验证字符串字段?

如何在mongoose 聚合中执行全文搜索

如何在带有 JS 的 Nodejs 中使用没有 Async 方法的 Await

如何在 Docker 容器中 SSO 登录 AWS(使用 aws-sdk v3)

每个数组值在 mongodb 中查找一个文档

我应该转译我的 TypeScript 应用程序吗?

为什么要加密 CSRF 令牌?

如何从 github 编译第三方扩展?

baseurl64 缓冲区解码

在 Passport 策略回调中获取请求对象

socket.io 发出回调合适吗?

无法获取 CSS 文件

使用 MongoDB 更新嵌套数组

在 Jade 包含中使用变量

Route.get() 需要回调函数,但得到对象未定义