首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >码头工人不能在建筑模式中提取本地建筑形象

码头工人不能在建筑模式中提取本地建筑形象
EN

Stack Overflow用户
提问于 2022-11-16 08:52:03
回答 1查看 30关注 0票数 2

我正在尝试用pnpm和turbo在我的monorepo中设置一个构建流。

我的目标是有一个这样的结构:

代码语言:javascript
运行
复制
apps/
    web/
       Dockerfile
    api/
       Dockerfile
Dockerfile
package.json
pnpm-lock.yaml
turbo.json

其中根Dockerfile如下所示:

代码语言:javascript
运行
复制
FROM --platform=linux/amd64 node:18-alpine as builder

WORKDIR /usr/src/app

# Prerequisites
RUN apk add --no-cache libc6-compat
RUN apk update
RUN npm install -g pnpm@7.16.0

# Copy dependency definitions
COPY package.json ./
COPY pnpm*.yaml ./
COPY .npmrc ./
RUN pnpm fetch

# Set CI to true to disable lefthook hooks
ENV CI=true

# Copy all other files
COPY . ./

然后,/api Dockerfile看起来如下(基于这个例子):

代码语言:javascript
运行
复制
FROM me/base as base

FROM node:18-alpine as api-builder
WORKDIR /usr/src/app

# Prerequisites
RUN apk add --no-cache libc6-compat
RUN apk update
RUN npm install -g turbo

COPY --from=base /usr/src/app /usr/src/app/
RUN turbo prune --scope=api --docker


FROM node:18-alpine as api-installer
WORKDIR /usr/src/app

# Prerequisites
RUN apk add --no-cache libc6-compat
RUN apk update
RUN npm install -g pnpm@7.16.0

COPY --from=api-builder /usr/src/app/out/json ./
COPY --from=api-builder /usr/src/app/pnpm-lock.yaml ./pnpm-lock.json
RUN pnpm install --filter=api --offline

COPY --from=api-builder /usr/src/app/out/full .
COPY --from=api-builder /usr/src/app/turbo.json ./turbo.json


FROM node:18-alpine as api-runner
WORKDIR /usr/src/app

RUN addgroup --system --gid 1001 nodejs
RUN adduser --system --uid 1001 runner
USER runner

COPY --from=api-installer /app/apps/api/package.json .

COPY --from=api-installer --chown=runner:nodejs /app/apps/api/build ./

ENTRYPOINT [ "node", "apps/api/build/server.js" ]

我首先要建立这样的基本形象:

docker build . -t me/base

并且我再次检查了图像的有效构建(docker image ls)。

接下来,我尝试在/apps/api中运行Dockerfile

但在这一点上,它失败了:

代码语言:javascript
运行
复制
[+] Building 0.7s (4/4) FINISHED
 => [internal] load build definition from Dockerfile                                                                                                                                                                         0.0s
 => => transferring dockerfile: 1.08kB                                                                                                                                                                                       0.0s
 => [internal] load .dockerignore                                                                                                                                                                                            0.0s
 => => transferring context: 2B                                                                                                                                                                                              0.0s
 => ERROR [internal] load metadata for docker.io/me/base:latest                                                                                                                                                          0.6s
 => CANCELED [internal] load metadata for docker.io/library/node:18-alpine                                                                                                                                                   0.6s
------
 > [internal] load metadata for docker.io/me/base:latest:
------
failed to solve with frontend dockerfile.v0: failed to create LLB definition: pull access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed

我从码头多阶段:如何分割成多个码头文件那里得到灵感

如何确保它不是从docker.io中提取的,而是从本地构建的映像中提取的呢?

注意:我知道可以进行一些优化,但是作为第一个版本,我首先希望这个设置能够正常工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-16 09:39:02

好的,我这里的问题是,我必须在基本映像中使用--platform=linux/amd64,以确保prisma依赖关系仍然有效。

这意味着我还必须在后续的映像中使用这一点,因为否则它就找不到本地映像(然后是ARM64,因为我在m1 mac上)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74457596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档