Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"Use Rosetta" makes build for platform linux/amd64 extremely slow #7075

Closed
a6z6 opened this issue Nov 12, 2023 · 7 comments
Closed

"Use Rosetta" makes build for platform linux/amd64 extremely slow #7075

a6z6 opened this issue Nov 12, 2023 · 7 comments

Comments

@a6z6
Copy link

a6z6 commented Nov 12, 2023

Description

I am using MacBook Pro M2 Max chip. For building an image, a nextjs app, to use on Ubuntu server,

Case 1:

If check ✅ Use Rosetta for x86/amd64 emulation on Apple Silicon,
then run docker buildx build --platform linux/amd64 -t my_docker_repo/test_image:latest .
After a whole night, the build was still running after 30k seconds:

[+] Building 33656.6s (15/22)                                                                        docker:desktop-linux
 => [deps 5/5] RUN yarn install                                                                                    463.3s
...
 => [builder 5/5] RUN yarn build         33186.8s 
...                                                                                     
 => => #    Creating an optimized production build ...                                                                    
 => => # Warning: For production Image Optimization with Next.js, the optional 'sharp' package is strongly recommended. R 
 => => # un 'npm i sharp', and Next.js will use it automatically for Image Optimization.                                  
 => => # Read more: https://nextjs.org/docs/messages/sharp-missing-in-production 
Case 2:

If uncheck ❌ Use Rosetta for x86/amd64 emulation on Apple Silicon,
run the same command: docker buildx build --platform linux/amd64 -t my_docker_repo/test_image:latest .
done the job in around 300s:

...
 => [builder 5/5] RUN yarn build                            324.1s
...
 => => writing image sha256:b311...                         0.0s
Case 3:

If check ✅ Use Rosetta for x86/amd64 emulation on Apple Silicon,
run without specifying --platform tag (which would build an arm64 image): docker buildx build -t my_docker_repo/test_image:latest .
takes only 37 seconds:

...
 => [builder 5/5] RUN yarn build                            37.1s
...

Sure, this arm64 image could not be used in Ubuntu. But Case 3 proved this image is not very large. The build time in Case 2 is already very slow. ✅ Use Rosetta is expected to accelerate Case 2, but unfortunately, it stuck image building as shown in Case 1.

Reproduce

  1. Go to Docker Desktop for mac Settings, check ✅ Use Rosetta for x86/amd64 emulation on Apple Silicon
  2. git clone https://github.com/Yidadaa/ChatGPT-Next-Web.git
  3. cd ChatGPT-Next-Web
  4. docker buildx build --platform linux/amd64 -t test_image:latest .

Expected behavior

No response

docker version

Client:
 Cloud integration: v1.0.35+desktop.5
 Version:           24.0.6
 API version:       1.43
 Go version:        go1.20.7
 Git commit:        ed223bc
 Built:             Mon Sep  4 12:28:49 2023
 OS/Arch:           darwin/arm64
 Context:           desktop-linux

Server: Docker Desktop 4.25.0 (126437)
 Engine:
  Version:          24.0.6
  API version:      1.43 (minimum version 1.12)
  Go version:       go1.20.7
  Git commit:       1a79695
  Built:            Mon Sep  4 12:31:36 2023
  OS/Arch:          linux/arm64
  Experimental:     false
 containerd:
  Version:          1.6.22
  GitCommit:        8165feabfdfe38c65b599c4993d227328c231fca
 runc:
  Version:          1.1.8
  GitCommit:        v1.1.8-0-g82f18fe
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

docker info

Client:
 Version:    24.0.6
 Context:    desktop-linux
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.11.2-desktop.5
    Path:     /Users/a6z6/.docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.23.0-desktop.1
    Path:     /Users/a6z6/.docker/cli-plugins/docker-compose
  dev: Docker Dev Environments (Docker Inc.)
    Version:  v0.1.0
    Path:     /Users/a6z6/.docker/cli-plugins/docker-dev
  extension: Manages Docker extensions (Docker Inc.)
    Version:  v0.2.20
    Path:     /Users/a6z6/.docker/cli-plugins/docker-extension
  init: Creates Docker-related starter files for your project (Docker Inc.)
    Version:  v0.1.0-beta.9
    Path:     /Users/a6z6/.docker/cli-plugins/docker-init
  sbom: View the packaged-based Software Bill Of Materials (SBOM) for an image (Anchore Inc.)
    Version:  0.6.0
    Path:     /Users/a6z6/.docker/cli-plugins/docker-sbom
  scan: Docker Scan (Docker Inc.)
    Version:  v0.26.0
    Path:     /Users/a6z6/.docker/cli-plugins/docker-scan
  scout: Docker Scout (Docker Inc.)
    Version:  v1.0.9
    Path:     /Users/a6z6/.docker/cli-plugins/docker-scout

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 5
 Server Version: 24.0.6
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Using metacopy: false
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: runc io.containerd.runc.v2
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 8199c4993d2273eabfdf65fe38c65b528c231fca
 runc version: v1.1.8-0-g82f18fe
 init version: de40ad0
 Security Options:
  seccomp
   Profile: unconfined
  cgroupns
 Kernel Version: 6.4.16-linuxkit
 Operating System: Docker Desktop
 OSType: linux
 Architecture: aarch64
 CPUs: 12
 Total Memory: 7.66GiB
 Name: linuxkit-65284a35044c
 ID: 222df668-01d2-4438-9a1b-ba6f0a67ef7c
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 HTTP Proxy: http.docker.internal:3128
 HTTPS Proxy: http.docker.internal:3128
 No Proxy: hubproxy.docker.internal
 Experimental: false
 Insecure Registries:
  hubproxy.docker.internal:5555
  127.0.0.0/8
 Live Restore Enabled: false

WARNING: daemon is not using the default seccomp profile

Diagnostics ID

a9d15c7e-33c8-4c10-9513-d0f62d4186fd/20231112055512

Additional Info

No response

@a6z6 a6z6 changed the title "Use Rosetta" makes build for platform linux/amd64 last forever "Use Rosetta" makes build for platform linux/amd64 extremely slow Nov 12, 2023
@alnaranjo
Copy link

I had to revert to 4.24.2 to be able to work. Using 4.25.x would cause docker build to hang indefinitely even when disabling 'use rosetta'. My app is a simple node/next app. Building arm images is a breeze, though.

@iaurg
Copy link

iaurg commented Nov 20, 2023

I'm facing the same issue on MacBook Air M1 while building a Next.js with Nest.js app. Sometimes, the computer just crashes because resources are completely used by Docker, forcing me to reset the OS.

Downgrading to 4.24.2 helped. Thanks @alnaranjo

@a6z6
Copy link
Author

a6z6 commented Nov 22, 2023

Thank you, @alnaranjo and @iaurg , for providing more work arounds!

Upgraded to v4.25.2, no luck. I just log my testing here for later reference.

@AlexandreRoba
Copy link

Same here downgraded to 4.24.2 and unchecked Use Roseta..in order to build a very simple next app on an apple M3 Max with 64GB in more than 5 minutes.

@dgageot
Copy link
Member

dgageot commented Dec 6, 2023

Hi! Have you tried with Docker Desktop v4.26.0?

@djcristi
Copy link

djcristi commented Dec 6, 2023

Hi! Have you tried with Docker Desktop v4.26.0?

for me works, it fixes the 100% cpu stuck at step node / npm build . hurrray.

@dgageot
Copy link
Member

dgageot commented Dec 6, 2023

Thanks! I'm going to close this issue then. Feel free to reopen

@dgageot dgageot closed this as completed Dec 6, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

7 participants