ynput / ayon-docker

The best way to deploy and test AYON server with frontend
Apache License 2.0
36 stars 26 forks source link

Arm64 support #28

Open Randalix opened 5 months ago

Randalix commented 5 months ago

Can we get arm64 support?

martastain commented 5 months ago

That would be nice indeed. Are you interested in running on mac or a generic arm server?

Could you try building the image yourself using make build command on your platform?

Randalix commented 5 months ago

I'm running debian on a m1 mac. I've tried to build the server, but currently I'm stuck here:

$ make check
sed -i "s/^version = \".*\"/version = \"1.0.11\"/" pyproject.toml
poetry run ruff check . --select=I --fix
poetry run ruff format .
275 files left unchanged
poetry run ruff check . --fix
poetry run mypy .
ayon_server/addons/addon.py:550: error: Item "None" of "BaseSettingsModel | None" has no attribute "dict"  [union-attr]
Found 1 error in 1 file (checked 261 source files)
make: *** [Makefile:12: check] Error 1

Will give it another try tomorrow.

martastain commented 5 months ago

You don't need to use the Makefile in ayon-backend repo. This (ayon-docker) repository has its own makefile with "build" target.

It should clone both backend and frontend locally and build a local copy of ynput/ayon:latest image, which you can then use. I assume it SHOULD build it based on your platform.

You may also need to tweak the Dockerfile to use the correct base images - honestly, I am not sure about that part, but both node and python images used in the dockerfile have their arm64v8 equivalents:

https://hub.docker.com/r/arm64v8/python/ https://hub.docker.com/r/arm64v8/node/

ballinger commented 2 months ago

same issue here

[+] Running 6/6
 ✔ Network ayon-docker_default                                                                                                                           Created                                                                                                                              0.3s 
 ✔ Volume "ayon-docker_db"                                                                                                                               Created                                                                                                                              0.0s 
 ✔ Container ayon-docker-redis-1                                                                                                                         Created                                                                                                                             12.4s 
 ✔ Container ayon-docker-postgres-1                                                                                                                      Created                                                                                                                             12.4s 
 ✔ Container ayon-docker-server-1                                                                                                                        Created                                                                                                                              0.2s 
 ! server 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 
Attaching to postgres-1, redis-1, server-1
redis-1     | 1:C 26 Jul 2024 17:18:29.684 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
redis-1     | 1:C 26 Jul 2024 17:18:29.688 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
redis-1     | 1:C 26 Jul 2024 17:18:29.688 * Redis version=7.2.5, bits=64, commit=00000000, modified=0, pid=1, just started
redis-1     | 1:C 26 Jul 2024 17:18:29.688 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
redis-1     | 1:M 26 Jul 2024 17:18:29.690 * monotonic clock: POSIX clock_gettime
redis-1     | 1:M 26 Jul 2024 17:18:29.692 * Running mode=standalone, port=6379.
redis-1     | 1:M 26 Jul 2024 17:18:29.693 * Server initialized
redis-1     | 1:M 26 Jul 2024 17:18:29.694 * Ready to accept connections tcp

postgres-1  | /usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/*
postgres-1  | 
postgres-1  | 2024-07-26 19:18:36.130 CEST [55] LOG:  received fast shutdown request
postgres-1  | waiting for server to shut down....2024-07-26 19:18:36.144 CEST [55] LOG:  aborting any active transactions
postgres-1  | 2024-07-26 19:18:36.150 CEST [55] LOG:  background worker "logical replication launcher" (PID 61) exited with exit code 1
postgres-1  | 2024-07-26 19:18:36.153 CEST [56] LOG:  shutting down
postgres-1  | 2024-07-26 19:18:36.161 CEST [56] LOG:  checkpoint starting: shutdown immediate
server-1    | exec /bin/bash: exec format error
postgres-1  | 2024-07-26 19:18:36.654 CEST [56] LOG:  checkpoint complete: wrote 918 buffers (5.6%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.168 s, sync=0.305 s, total=0.501 s; sync files=301, longest=0.290 s, average=0.002 s; distance=4222 kB, estimate=4222 kB
postgres-1  | 2024-07-26 19:18:36.669 CEST [55] LOG:  database system is shut down
postgres-1  |  done
postgres-1  | server stopped
postgres-1  | 
postgres-1  | PostgreSQL init process complete; ready for start up.
postgres-1  | 
postgres-1  | 2024-07-26 19:18:36.809 CEST [1] LOG:  starting PostgreSQL 15.7 (Debian 15.7-1.pgdg120+1) on aarch64-unknown-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit
postgres-1  | 2024-07-26 19:18:36.834 CEST [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
postgres-1  | 2024-07-26 19:18:36.834 CEST [1] LOG:  listening on IPv6 address "::", port 5432
postgres-1  | 2024-07-26 19:18:36.843 CEST [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
postgres-1  | 2024-07-26 19:18:36.867 CEST [72] LOG:  database system was shut down at 2024-07-26 19:18:36 CEST
postgres-1  | 2024-07-26 19:18:36.901 CEST [1] LOG:  database system is ready to accept connections
server-1 exited with code 1
server-1    | exec /bin/bash: exec format error

added platform: linux/arm64 to the yml files

WARN[0000] /home/phil/ayon-docker/docker-compose.yml: `version` is obsolete 
[+] Running 0/1
 ⠹ server Pulling                                                                                                                                                                                                                                                                             1.2s 
image with reference docker.io/ynput/ayon:latest was found but does not match the specified platform: wanted linux/arm64, actual: linux/amd64

gave it another try with a fresh pull...

sudo docker compose up
WARN[0000] /home/phil/ayon-docker/docker-compose.yml: `version` is obsolete 
[+] Running 0/1
 ⠙ server Pulling                                                                                                                                                                                                                                                                             1.2s 
image with reference docker.io/ynput/ayon:latest was found but does not match the specified platform: wanted linux/arm64, actual: linux/amd64
martastain commented 2 months ago

Out of the curiosity - what platform do you use? Ampere?

ballinger commented 2 months ago

I usually just test stuff with it...it's a PI 4 - latest 64bit Debian OS

martastain commented 2 months ago

Gotcha. I doubt we'll support RaPi natively as it... Well... Doesn't make much sense, but have you tried building the image yourself? I wonder if that works or has unresolvable dependencies

ballinger commented 2 months ago

Couldn't find a normal compile guide and only got docker on the pi...

On Fri, Jul 26, 2024, 20:08 Martin Wacker @.***> wrote:

Gotcha. I doubt we'll support RaPi natively as it... Well... Doesn't make much sense, but have you tried building the image yourself? I wonder if that works or has unresolvable dependencies

— Reply to this email directly, view it on GitHub https://github.com/ynput/ayon-docker/issues/28#issuecomment-2253242389, or unsubscribe https://github.com/notifications/unsubscribe-auth/AANJGRWV7AHW7TQ2GLO54TDZOKGDTAVCNFSM6AAAAABLQ4TY2KVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENJTGI2DEMZYHE . You are receiving this because you commented.Message ID: @.***>

Redwolf223 commented 1 month ago

I've managed to build the image using qemu and successfully started PostgreSQL and Redis using the same setup.

But I'm encountering an issue while trying to start the ayon-docker-server on my Raspberry Pi 5.

The server fails to initialize with the following error:

`2024-08-25 22:32:34 ERROR server Unable to initialize users

Traceback (most recent call last): File "/backend/ayon_server/api/server.py", line 292, in init_api module = importlib.import_module(module_name) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/importlib/init.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "", line 1204, in _gcd_import File "", line 1176, in _find_and_load File "", line 1147, in _find_and_load_unlocked File "", line 690, in _load_unlocked File "", line 940, in exec_module File "", line 241, in _call_with_frames_removed File "/backend/api/users/init.py", line 3, in from . import avatar, password_reset, users File "/backend/api/users/avatar.py", line 14, in from ayon_server.helpers.thumbnails import process_thumbnail File "/backend/ayon_server/helpers/thumbnails.py", line 5, in from PIL import Image File "/usr/local/lib/python3.11/site-packages/PIL/Image.py", line 100, in from . import _imaging as core ImportError: libXau-154567c4.so.6.0.0: failed to map segment from shared object `

Based on the traceback, it seems the error is related to the Pillow (PIL) library trying to load a shared object libXau-154567c4.so.6.0.0, which fails due to a mapping error.