我没有经常使用buildx
,也不知道这里发生了什么。当我在我的英特尔Mac上运行一个buildx
构建时,一切都可以为arm64构建,但是当我让一个GitLab运行器在amd64服务器上进行构建时,它就失败了。
[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构建得很好。
$ docker build .
地方指挥部:
$ docker buildx create --use
$ docker buildx build --platform linux/arm64 .
GitLab运行程序构建环境
$ 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
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
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
任何想法都会感激的,非常感谢!
发布于 2022-06-09 02:16:08
当在buildx构建过程中遇到运行npm install
的类似问题时,我能够用
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
在此之后,我的npm install
对我试图构建的所有体系结构都运行得很好。
发布于 2022-09-20 08:17:07
我在Docker 存储库上找到了,在这里他们解释了为什么会发生这种情况,以及如何解决它。它们还提供了针对不同用例的Github操作和其他解决方案的示例。
基本上,您需要在文件中的 docker buildx build
命令之前添加这三行docker buildx build
:
- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
- docker buildx create --driver docker-container --use
- docker buildx inspect --bootstrap
在这种情况下,文件应该如下所示:
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
发布于 2022-07-28 17:44:15
对我来说,这是我缓存的图像的一些问题。我已经清除了码头缓存,但是buildx缓存出了问题。跑步,
码头修理厂
帮我解决了。
https://stackoverflow.com/questions/72167570
复制相似问题