tiangolo / full-stack-fastapi-template

Full stack, modern web application template. Using FastAPI, React, SQLModel, PostgreSQL, Docker, GitHub Actions, automatic HTTPS and more.
MIT License
24.78k stars 4.2k forks source link

Mac M1 Docker error #707

Open renja-g opened 4 months ago

renja-g commented 4 months ago

On my M1 I get the following error when trying to run docker-compose.yml via docker compose up -d:

 ! backend The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested 0.0s
dudil commented 4 months ago

Hi @renja-g, a quick fix would be to add the following line into the docker-compose.yml backend section:

...
...
build:
      context: ./backend
      args:
        INSTALL_DEV: ${INSTALL_DEV-false}

    platform: linux/amd64 # Add this line for M1 Macs
...
...

@tiangolo , I will issue a PR for quickly fix that if you don't mind.

I'm not sure why the base image you are building from tiangolo/uvicorn-gunicorn is marked as supporting only amd64, The base image of that one is python:3.10 which also supports arm64.

tiangolo commented 4 months ago

Thanks @dudil! :bow: Thanks for the help and the fix!

@renja-g this was handled in https://github.com/tiangolo/full-stack-fastapi-template/pull/710 :nerd_face:

dudil commented 4 months ago

@tiangolo - quick look for the root cause I found this is an issue with the GitHub action of uvicorn-gunicorn-docker.

There is an open PR for fixing it but I'm not sure how much updated it is or still relevant.

However, seems like @tedvim who create the PR made a huge step forward and build a full registry of python stack images which are already multi-arch and updated https://github.com/multi-py Switching the backend base image to be based on https://github.com/multi-py/python-gunicorn + fastapi, could push your amazing project forward and remove the need for you to maintain also the docker images. I'll be more than happy to assist and make the fix if you think the same. 💐

billzhong commented 3 months ago

Hi @dudil , seems like multi-arch support is added: https://github.com/tiangolo/uvicorn-gunicorn-fastapi-docker/pull/273 . So your patch is not longer need. It would be nice to remove it to improve the performance at Apple Silicon.

klipdassie commented 1 week ago

Hi @dudil , seems like multi-arch support is added: tiangolo/uvicorn-gunicorn-fastapi-docker#273 . So your patch is not longer need. It would be nice to remove it to improve the performance at Apple Silicon.

Thank you for pointing that out. I was using a non-Apple ARM system where the Docker Engine did not have the possibility to fallback to the AMD64 architecture, causing the image build to fail. After removing the patch, everything worked perfectly.

dudil commented 1 week ago

Hi @klipdassie, thank you for that note 💐 As @billzhong had mentioned the base image now supports multi-arch so this patch is indeed no longer needed. @tiangolo - I will remove it with a new PR so this issue could be resolved.