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

ARM7 Docker Support #77

Closed
mb1317 opened this issue Apr 20, 2023 · 11 comments
Closed

ARM7 Docker Support #77

mb1317 opened this issue Apr 20, 2023 · 11 comments
Labels
enhancement New feature or request

Comments

@mb1317
Copy link

mb1317 commented Apr 20, 2023

Description

Would like to get this deployed on a Raspberry Pi via Portainer but getting the following error

no matching manifest for linux/arm/v7 in the manifest list entries

Any way to include an ARM7 image for those who want to push to their local RPI servers?

What alternatives have you considered?

No response

@mb1317 mb1317 added the enhancement New feature or request label Apr 20, 2023
@jdholtz
Copy link
Owner

jdholtz commented Apr 20, 2023

Yes, I should just need to include the architecture in the Docker workflow.

@jdholtz
Copy link
Owner

jdholtz commented Apr 22, 2023

Unfortunately, the brotli wheel fails to install while building this image, so this might take a little bit of time to support as I don't have access to an ARM v7. If you are familiar with Docker, it would be great if you could try building it and potentially fixing any issues that appear.

Edit: I was actually able to test a build locally using Docker Buildx. I was able to fix the brotli installation by installing g++. However, cryptography also fails to build due to Rust not being installed. Unless these wheels are available to download, I don't see it being possible to add ARM v7 support yet.

@jdholtz jdholtz closed this as completed in ebdcc96 May 6, 2023
@jdholtz
Copy link
Owner

jdholtz commented May 6, 2023

This should not have been automatically closed because I reverted that commit.

@jdholtz jdholtz reopened this May 6, 2023
@jdholtz
Copy link
Owner

jdholtz commented May 9, 2023

Unfortunately, I don't see it being possible to support this anytime soon. If anyone else wants to try to add support for this, that would be appreciated. I'll brief what I tried already.

In addition to what I said above, I tried to use piwheels as an --extra-index-url for pip, but that only downloaded to packages that were not custom-built for ARMv7. For example, it would still try to build PyYAML from source (and a few others like cryptography, cffi, and brotli). I tried on both the python:3.11-alpine image and the python:3.11 image, but had the same result on both.

If you still want to use this script on ARMv7, it appears that the only option currently is to run it locally for now. Unless the Python packages mentioned above release support for ARMv7 musllinux, I don't see supporting this being possible.

@jdholtz jdholtz closed this as not planned Won't fix, can't repro, duplicate, stale May 9, 2023
@jdholtz jdholtz changed the title ARM7 support ARM7 Docker Support May 9, 2023
@matchmee
Copy link

Has there been any more traction on this at all? I'm running into the same problem right now.

@jdholtz
Copy link
Owner

jdholtz commented Jan 26, 2024

Has there been any more traction on this at all? I'm running into the same problem right now.

Thanks for reminding me about this. I just tried building it with ARMv7 and it did successfully work (using emulation). I don't have an ARMv7 device to test it on, so could you do docker build . after cloning the repository and then run it to see if that works for you?

@matchmee
Copy link

It seems like it is running, but I'm not sure I am able to give it any commands or anything. As soon as I run the docker, it exits but returns no errors.

docker inspect auto-southwest-container-temp [ { "Id": "8b024475c404279e5d47ad8d4a8e5206b416f789aae6642717c57b0eb1731019", "Created": "2024-01-26T23:46:30.105680712Z", "Path": "python3", "Args": [ "-u", "southwest.py" ], "State": { "Status": "exited", "Running": false, "Paused": false, "Restarting": false, "OOMKilled": false, "Dead": false, "Pid": 0, "ExitCode": 0, "Error": "", "StartedAt": "2024-01-27T00:09:07.893739719Z", "FinishedAt": "2024-01-27T00:09:11.810202773Z" }, "Image": "sha256:6331c58469c854c4687e529b8bbda525e88518a7186e5250028ead65198bad41", "ResolvConfPath": "/var/lib/docker/containers/8b024475c404279e5d47ad8d4a8e5206b416f789aae6642717c57b0eb1731019/resolv.conf", "HostnamePath": "/var/lib/docker/containers/8b024475c404279e5d47ad8d4a8e5206b416f789aae6642717c57b0eb1731019/hostname", "HostsPath": "/var/lib/docker/containers/8b024475c404279e5d47ad8d4a8e5206b416f789aae6642717c57b0eb1731019/hosts", "LogPath": "/var/lib/docker/containers/8b024475c404279e5d47ad8d4a8e5206b416f789aae6642717c57b0eb1731019/8b024475c404279e5d47ad8d4a8e5206b416f789aae6642717c57b0eb1731019-json.log", "Name": "/auto-southwest-container-temp", "RestartCount": 0, "Driver": "overlay2", "Platform": "linux", "MountLabel": "", "ProcessLabel": "", "AppArmorProfile": "", "ExecIDs": null, "HostConfig": { "Binds": [ "/data/ddns/data/config.json:/app/config.json" ], "ContainerIDFile": "", "LogConfig": { "Type": "json-file", "Config": {} }, "NetworkMode": "default", "PortBindings": {}, "RestartPolicy": { "Name": "no", "MaximumRetryCount": 0 }, "AutoRemove": false, "VolumeDriver": "", "VolumesFrom": null, "CapAdd": null, "CapDrop": null, "CgroupnsMode": "private", "Dns": [], "DnsOptions": [], "DnsSearch": [], "ExtraHosts": null, "GroupAdd": null, "IpcMode": "private", "Cgroup": "", "Links": null, "OomScoreAdj": 0, "PidMode": "", "Privileged": false, "PublishAllPorts": false, "ReadonlyRootfs": false, "SecurityOpt": null, "UTSMode": "", "UsernsMode": "", "ShmSize": 67108864, "Runtime": "runc", "ConsoleSize": [ 0, 0 ], "Isolation": "", "CpuShares": 0, "Memory": 0, "NanoCpus": 0, "CgroupParent": "", "BlkioWeight": 0, "BlkioWeightDevice": [], "BlkioDeviceReadBps": null, "BlkioDeviceWriteBps": null, "BlkioDeviceReadIOps": null, "BlkioDeviceWriteIOps": null, "CpuPeriod": 0, "CpuQuota": 0, "CpuRealtimePeriod": 0, "CpuRealtimeRuntime": 0, "CpusetCpus": "", "CpusetMems": "", "Devices": [], "DeviceCgroupRules": null, "DeviceRequests": null, "KernelMemory": 0, "KernelMemoryTCP": 0, "MemoryReservation": 0, "MemorySwap": 0, "MemorySwappiness": null, "OomKillDisable": null, "PidsLimit": null, "Ulimits": null, "CpuCount": 0, "CpuPercent": 0, "IOMaximumIOps": 0, "IOMaximumBandwidth": 0, "MaskedPaths": [ "/proc/asound", "/proc/acpi", "/proc/kcore", "/proc/keys", "/proc/latency_stats", "/proc/timer_list", "/proc/timer_stats", "/proc/sched_debug", "/proc/scsi", "/sys/firmware" ], "ReadonlyPaths": [ "/proc/bus", "/proc/fs", "/proc/irq", "/proc/sys", "/proc/sysrq-trigger" ] }, "GraphDriver": { "Data": { "LowerDir": "/var/lib/docker/overlay2/762ae2aa253d020464beeb37f26174a0ae123d6fc8ebeac4f545cac97ff59658-init/diff:/var/lib/docker/overlay2/7cc68d388bdfb0f9461d4cd399db93bc44a7a97644662004116acacb61a8e3b3/diff:/var/lib/docker/overlay2/10e1bd0082233e42c2891d6b6f59e0a27e4b2ffcd41c5a14c87988a64c00bec7/diff:/var/lib/docker/overlay2/cdf98fb9b9b90be8558ee2afb934b9432fe3f5e2254f3dff4c82a5a8cae3ae41/diff:/var/lib/docker/overlay2/f35898128e1e69ab9dfe3ed0ebdb8ade9a336e93f08b88d66954fc2d25aa41c0/diff:/var/lib/docker/overlay2/29b30567fc8ea34fa4e01d05943b9e003ea9019812bb7d1da6c660fc60fd71f1/diff:/var/lib/docker/overlay2/265758db1b21fa9bcf016fe72e1296c7e5d4109cedec1a4eb4547512bf825297/diff:/var/lib/docker/overlay2/2b5d62d4e38f48cd6b05c34207b1fc4172ba6c1736f1835745fedf596542946e/diff:/var/lib/docker/overlay2/640ed04f17d013b4d131b28cd42227ef08ee81c7fd9ee7731a9a9e3b519b724f/diff:/var/lib/docker/overlay2/30188b77f4ae14ba11903841318dbfb2d7f3a8e763465e412681c742927fe1d9/diff:/var/lib/docker/overlay2/81525bd6095e916bac73c987ad8b9280cfe221c0f9f06ed835e6c214ecd88489/diff:/var/lib/docker/overlay2/aea39dae813edab710ced12088a3d26dd2d396ec0a7937b7c61b3d5324187ba7/diff:/var/lib/docker/overlay2/a6bd890aae0c1e5c42e6b49662d285996d4cf503385902e12af48388dc4fe7fd/diff", "MergedDir": "/var/lib/docker/overlay2/762ae2aa253d020464beeb37f26174a0ae123d6fc8ebeac4f545cac97ff59658/merged", "UpperDir": "/var/lib/docker/overlay2/762ae2aa253d020464beeb37f26174a0ae123d6fc8ebeac4f545cac97ff59658/diff", "WorkDir": "/var/lib/docker/overlay2/762ae2aa253d020464beeb37f26174a0ae123d6fc8ebeac4f545cac97ff59658/work" }, "Name": "overlay2" }, "Mounts": [ { "Type": "bind", "Source": "/data/ddns/data/config.json", "Destination": "/app/config.json", "Mode": "", "RW": true, "Propagation": "rprivate" } ], "Config": { "Hostname": "8b024475c404", "Domainname": "", "User": "", "AttachStdin": true, "AttachStdout": true, "AttachStderr": true, "Tty": true, "OpenStdin": true, "StdinOnce": true, "Env": [ "PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "LANG=C.UTF-8", "GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305", "PYTHON_VERSION=3.12.1", "PYTHON_PIP_VERSION=23.2.1", "PYTHON_GET_PIP_URL=https://github.com/pypa/get-pip/raw/049c52c665e8c5fd1751f942316e0a5c777d304f/public/get-pip.py", "PYTHON_GET_PIP_SHA256=7cfd4bdc4d475ea971f1c0710a5953bcc704d171f83c797b9529d9974502fcc6", "AUTO_SOUTHWEST_CHECK_IN_DOCKER=1" ], "Cmd": null, "Image": "auto-southwest-check-in", "Volumes": null, "WorkingDir": "/app", "Entrypoint": [ "python3", "-u", "southwest.py" ], "OnBuild": null, "Labels": {} }, "NetworkSettings": { "Bridge": "", "SandboxID": "afe81504113777fa38d62306dcc64b5b5685cc57d1eb4b2e44788afe119d5787", "HairpinMode": false, "LinkLocalIPv6Address": "", "LinkLocalIPv6PrefixLen": 0, "Ports": {}, "SandboxKey": "/var/run/docker/netns/afe815041137", "SecondaryIPAddresses": null, "SecondaryIPv6Addresses": null, "EndpointID": "", "Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "IPAddress": "", "IPPrefixLen": 0, "IPv6Gateway": "", "MacAddress": "", "Networks": { "bridge": { "IPAMConfig": null, "Links": null, "Aliases": null, "NetworkID": "ab1bda4ba2c689d49557b0d8c41ac7ea17e84fe990ce0506a0e874c5e57e343f", "EndpointID": "", "Gateway": "", "IPAddress": "", "IPPrefixLen": 0, "IPv6Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "MacAddress": "", "DriverOpts": null } } } } ]

@matchmee
Copy link

Could we chat on Discord or some other method to walk through and make sure I'm doing it right? I guess the big thing is that I'm not getting any errors when I built it, but right now I'm having trouble having it do anything other than build and then exit right away.

@jdholtz
Copy link
Owner

jdholtz commented Jan 27, 2024

Could we chat on Discord or some other method to walk through and make sure I'm doing it right?

Sure. Just email me your username (or put it here if you want) and we can continue the conversation on there.

@matchmee
Copy link

discord - guitarwonderboy

jdholtz added a commit that referenced this issue Feb 16, 2024
@jdholtz
Copy link
Owner

jdholtz commented Feb 16, 2024

Will be resolved in v7.3 (currently, the develop image supports ARMv7). Thanks to @matchmee for helping test.

@jdholtz jdholtz closed this as completed Feb 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants