首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >码头建造商nodejs失败

码头建造商nodejs失败
EN

Stack Overflow用户
提问于 2022-05-09 06:04:37
回答 3查看 1.2K关注 0票数 5

我没有经常使用buildx,也不知道这里发生了什么。当我在我的英特尔Mac上运行一个buildx构建时,一切都可以为arm64构建,但是当我让一个GitLab运行器在amd64服务器上进行构建时,它就失败了。

代码语言:javascript
运行
复制
[builder 4/6] RUN which node
0.514 /usr/local/bin/node
 DONE 0.6s

[builder 5/6] RUN node -v
0.633 v16.13.0
 DONE 0.7s

[builder 6/6] RUN npm install
0.360 Error while loading /usr/local/sbin/node: No such file or directory

我看到npm找错地方了,但它为什么要在GitLab运行程序上寻找GitLab,而在我的Mac上寻找正确的路径?如果我只是运行,这个Dockerfile构建得很好。

代码语言:javascript
运行
复制
$ docker build .

地方指挥部:

代码语言:javascript
运行
复制
$ docker buildx create --use
$ docker buildx build --platform linux/arm64 .

GitLab运行程序构建环境

代码语言:javascript
运行
复制
$ docker buildx create --platform linux/amd64,linux/arm64 --use
epic_wright

$ docker buildx ls
NAME/NODE      DRIVER/ENDPOINT      STATUS   PLATFORMS
epic_wright *  docker-container              
  epic_wright0 tcp://localhost:2375 inactive linux/amd64*, linux/arm64*
default        docker                        
  default      default              running  linux/amd64, linux/386

Dockerfile

代码语言:javascript
运行
复制
FROM node:16.13.0-bullseye

ARG GITLAB_AUTH_TOKEN

COPY ./app /app
WORKDIR /app

RUN which node
RUN node -v
RUN npm install

..gitlab ci.yml

代码语言:javascript
运行
复制
image: eventngine/docker-buildx

stages:
  - build

variables:
  DOCKER_DRIVER: overlay2
  DOCKER_TLS_CERTDIR: ""
  DOCKER_HOST: tcp://localhost:2375

build:
  stage: build
  services:
    - name: docker:19.03.12-dind
      command: ["--experimental"]
  script:
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
    - docker buildx create --use
    - docker buildx build -t "$CI_REGISTRY_IMAGE:v${CI_COMMIT_SHA:0:8}" --build-arg GITLAB_AUTH_TOKEN=$CI_JOB_TOKEN  --platform linux/arm64 --push .
  only:
    - main

任何想法都会感激的,非常感谢!

EN

回答 3

Stack Overflow用户

发布于 2022-06-09 02:16:08

当在buildx构建过程中遇到运行npm install的类似问题时,我能够用

docker run --rm --privileged multiarch/qemu-user-static --reset -p yes

在此之后,我的npm install对我试图构建的所有体系结构都运行得很好。

票数 3
EN

Stack Overflow用户

发布于 2022-09-20 08:17:07

我在Docker 存储库上找到了,在这里他们解释了为什么会发生这种情况,以及如何解决它。它们还提供了针对不同用例的Github操作和其他解决方案的示例。

基本上,您需要在文件中的 docker buildx build命令之前添加这三行docker buildx build

代码语言:javascript
运行
复制
- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
- docker buildx create --driver docker-container --use
- docker buildx inspect --bootstrap

在这种情况下,文件应该如下所示:

代码语言:javascript
运行
复制
build:
  stage: build
  services:
    - name: docker:19.03.12-dind
      command: ["--experimental"]
  script:
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
    - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
    - docker buildx create --driver docker-container --use
    - docker buildx inspect --bootstrap
    - docker buildx build -t "$CI_REGISTRY_IMAGE:v${CI_COMMIT_SHA:0:8}" --build-arg GITLAB_AUTH_TOKEN=$CI_JOB_TOKEN  --platform linux/arm64 --push .
  only:
    - main
票数 1
EN

Stack Overflow用户

发布于 2022-07-28 17:44:15

对我来说,这是我缓存的图像的一些问题。我已经清除了码头缓存,但是buildx缓存出了问题。跑步,

码头修理厂

帮我解决了。

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

https://stackoverflow.com/questions/72167570

复制
相关文章

相似问题

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