ayon-docker icon indicating copy to clipboard operation
ayon-docker copied to clipboard

Arm64 support

Open Randalix opened this issue 1 year ago • 10 comments

Can we get arm64 support?

Randalix avatar May 02 '24 16:05 Randalix

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?

martastain avatar May 07 '24 19:05 martastain

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.

Randalix avatar May 07 '24 21:05 Randalix

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/

martastain avatar May 08 '24 08:05 martastain

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

ballinger avatar Jul 26 '24 17:07 ballinger

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

martastain avatar Jul 26 '24 17:07 martastain

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

ballinger avatar Jul 26 '24 17:07 ballinger

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

martastain avatar Jul 26 '24 18:07 martastain

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: @.***>

ballinger avatar Jul 26 '24 19:07 ballinger

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.

Redwolf223 avatar Aug 25 '24 21:08 Redwolf223