我真的不熟悉docker,但我正在使用docker运行一个web应用程序,它使用prisma/Nexus.
当我尝试编写的时候,我得到了这个错误:
Error: Unknown binaryTarget linux-arm-openssl-undefined and no custom binaries were provided
谁能告诉我这个错误是什么意思,我该如何解决它?我认为这与docker不支持我正在使用的操作系统有关,但我不能完全确定。
发布于 2021-03-31 15:21:31
Prisma客户端由三个主要组件组成。
的形式
虽然生成的代码是跨平台的(这是javascript),但query engine并非如此。
当您运行prisma generate命令时,prisma似乎使用query engine,但它需要为当前平台otherwise it throws an error找到正确的二进制文件。
问题是由于某种原因,我无法解释(因为我也有同样的问题),docker中的平台不能被识别为supported platform one。
我的猜测是要么docker提供了错误的平台,要么在某个时候prisma中存在错误,错误消息linux-arm-openssl-undefined with undefined可能是问题的线索。
解决方案:现在:我计划在一台x86计算机上运行我的镜像这个问题得到解决的时间。最新的docker 3 RC2 (5天前发布)也无济于事。
请注意,您可以在schema.prisma文件中指定binaryTargets。
generator client {
provider = "prisma-client-js"
binaryTargets = ["debian-openssl-1.1.x"]
}但由于某些原因,即使我在debian上构建我的docker镜像,这也不起作用。Prisma似乎识别出我在使用linux-arm,但无法将binaryTarget与其关联。也就是…这个平台真的准确吗?docker是在引擎盖下运行linux arm,还是在rosetta下运行x86 debian?我不知道。
编辑节点图像是多拱形的,这意味着
FROM node:15.12.0-buster-slim AS builder我将为我的主机平台( linux /arm64/v8)选择linux架构似乎我们实际上可以build for x86 on m1 using buildx experimental feature according to this post
发布于 2021-09-20 19:12:53
未定义意味着容器中没有安装openssl。您可以通过安装openssl来获得正确的二进制目标名称。将此文件添加到Dockerfile:
FROM node:16-slim
RUN apt-get update
RUN apt-get install -y openssl从这里回答https://github.com/prisma/prisma/issues/861#issuecomment-881992292
发布于 2021-11-22 18:37:35
我在使用node:alpine时也遇到了同样的问题。首先,我尝试使用apk add openssl手动安装openssl,但仍然存在一些其他问题。
通过切换到node:lts并添加到Dockerfile RUN apt-get -qy update && apt-get -qy install openssl,我设法解决了这个问题
https://stackoverflow.com/questions/66530969
复制相似问题