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
armv7 support #99
Comments
@kn100 I was able to get this running on a Raspberry Pi with ARMv7 using my changes here: vonahnen@bf154da Here's my
|
I think the main question here is if ARMv7 is accepted as a supported platform. If so, then the pipeline should be updated to add this target to docker. If not, then end users should use the workaround above as an unsupported feature. |
I can tell you that it will run on a raspberry pi which is ARMv7. You have to download the image from docker locally and build it locally as well. Im running mine with little to no issues but be advised it isn't the snappiest. I just used these instructions and got it up and running in no time. |
@jayket @vonahnen can you confirm that it runs using the existing Dockerfile and Dockerfile.alpine images? @jayket it sounds like you already succeeded with the Dockerfile, but what about the Dockerfile.alpine? Here's the instructions to build and run for Alpine, assuming you're doing this on a Raspberry Pi:
In the pull-request #141, I modified the docker workflow to include building for the target |
I’m looking at it now please standby
…Sent from my iPhone
On Feb 16, 2023, at 9:44 PM, James Mortensen ***@***.***> wrote:
@jayket<https://github.com/jayket> @vonahnen<https://github.com/vonahnen> can you confirm that it runs using the existing Dockerfile and Dockerfile.alpine images? @jayket<https://github.com/jayket> it sounds like you already succeeded with the Dockerfile, but what about the Dockerfile.alpine?
Here's the instructions to build and run for Alpine, assuming you're doing this on a Raspberry Pi:
git clone https://github.com/actualbudget/actual-server.git
cd actual-server
docker build -t actual-server -f Dockerfile.alpine .
docker run -p 5006:5006 actual-server
In the pull-request #141<#141>, I modified the docker workflow to include building for the target linux/arm/v7. If you confirm it works, then we can have a maintainer review and merge the changes so that armv7 is included in Docker Hub.
—
Reply to this email directly, view it on GitHub<#99 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AZ5NWRVBL6SDKD7DF6NLKWTWX3QXJANCNFSM6AAAAAATNCSLPM>.
You are receiving this because you were mentioned.Message ID: ***@***.***>
|
***@***.***:~/appdata/test/actual-server $ docker build -t actual-server -f Dockerfile.alpine .
Sending build context to Docker daemon 3.829MB
Step 1/14 : FROM alpine as base
latest: Pulling from library/alpine
6fb81ff47bd6: Pull complete
Digest: sha256:69665d02cb32192e52e07644d76bc6f25abeb5410edc1c7a81a10ba3f0efb90a
Status: Downloaded newer image for alpine:latest
---> bc95c5506c55
Step 2/14 : RUN apk add --no-cache nodejs yarn npm python3 openssl build-base
---> Running in 7db8257b3173
fetch https://dl-cdn.alpinelinux.org/alpine/v3.17/main/armv7/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.17/community/armv7/APKINDEX.tar.gz
(1/41) Installing libgcc (12.2.1_git20220924-r4)
(2/41) Installing libstdc++ (12.2.1_git20220924-r4)
(3/41) Installing binutils (2.39-r2)
(4/41) Installing libmagic (5.43-r0)
(5/41) Installing file (5.43-r0)
(6/41) Installing libgomp (12.2.1_git20220924-r4)
(7/41) Installing libatomic (12.2.1_git20220924-r4)
(8/41) Installing gmp (6.2.1-r2)
(9/41) Installing isl25 (0.25-r0)
(10/41) Installing mpfr4 (4.1.0-r0)
(11/41) Installing mpc1 (1.2.1-r1)
(12/41) Installing gcc (12.2.1_git20220924-r4)
(13/41) Installing libstdc++-dev (12.2.1_git20220924-r4)
(14/41) Installing musl-dev (1.2.3-r4)
(15/41) Installing libc-dev (0.7.2-r3)
(16/41) Installing g++ (12.2.1_git20220924-r4)
(17/41) Installing make (4.3-r1)
(18/41) Installing fortify-headers (1.1-r1)
(19/41) Installing patch (2.7.6-r8)
(20/41) Installing build-base (0.5-r3)
(21/41) Installing ca-certificates (20220614-r4)
(22/41) Installing brotli-libs (1.0.9-r9)
(23/41) Installing c-ares (1.18.1-r1)
(24/41) Installing icu-data-en (72.1-r1)
Executing icu-data-en-72.1-r1.post-install
*
* If you need ICU with non-English locales and legacy charset support, install
* package icu-data-full.
*
(25/41) Installing icu-libs (72.1-r1)
(26/41) Installing nghttp2-libs (1.51.0-r0)
(27/41) Installing nodejs (18.14.1-r0)
(28/41) Installing npm (9.1.2-r0)
(29/41) Installing openssl (3.0.8-r0)
(30/41) Installing libbz2 (1.0.8-r4)
(31/41) Installing libexpat (2.5.0-r0)
(32/41) Installing libffi (3.4.4-r0)
(33/41) Installing gdbm (1.23-r0)
(34/41) Installing xz-libs (5.2.9-r0)
(35/41) Installing mpdecimal (2.5.1-r1)
(36/41) Installing ncurses-terminfo-base (6.3_p20221119-r0)
(37/41) Installing ncurses-libs (6.3_p20221119-r0)
(38/41) Installing readline (8.2.0-r0)
(39/41) Installing sqlite-libs (3.40.1-r0)
(40/41) Installing python3 (3.10.10-r0)
(41/41) Installing yarn (1.22.19-r0)
Executing busybox-1.35.0-r29.trigger
Executing ca-certificates-20220614-r4.trigger
OK: 275 MiB in 56 packages
Removing intermediate container 7db8257b3173
---> d295a4747884
Step 3/14 : WORKDIR /app
---> Running in 133ef9c1ea3e
Removing intermediate container 133ef9c1ea3e
---> 45ec94db7440
Step 4/14 : ENV NODE_ENV=production
---> Running in b6cba057a0cc
Removing intermediate container b6cba057a0cc
---> 30d6ccf0dfd0
Step 5/14 : ADD yarn.lock package.json ./
---> 551fc0e52298
Step 6/14 : RUN npm rebuild bcrypt --build-from-source
---> Running in 9eeefb67922a
rebuilt dependencies successfully
Removing intermediate container 9eeefb67922a
---> 15b8c516f963
Step 7/14 : RUN yarn install --production
---> Running in 1d1aa674a65e
yarn install v1.22.19
[1/4] Resolving packages...
warning @actual-app/api > ***@***.***: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Saved lockfile.
Done in 315.87s.
Removing intermediate container 1d1aa674a65e
---> 45d5d8386087
Step 8/14 : FROM alpine as prod
---> bc95c5506c55
Step 9/14 : RUN apk add --no-cache nodejs yarn openssl tini
---> Running in 800029d994ba
fetch https://dl-cdn.alpinelinux.org/alpine/v3.17/main/armv7/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.17/community/armv7/APKINDEX.tar.gz
(1/12) Installing ca-certificates (20220614-r4)
(2/12) Installing brotli-libs (1.0.9-r9)
(3/12) Installing c-ares (1.18.1-r1)
(4/12) Installing libgcc (12.2.1_git20220924-r4)
(5/12) Installing icu-data-en (72.1-r1)
Executing icu-data-en-72.1-r1.post-install
*
* If you need ICU with non-English locales and legacy charset support, install
* package icu-data-full.
*
(6/12) Installing libstdc++ (12.2.1_git20220924-r4)
(7/12) Installing icu-libs (72.1-r1)
(8/12) Installing nghttp2-libs (1.51.0-r0)
(9/12) Installing nodejs (18.14.1-r0)
(10/12) Installing openssl (3.0.8-r0)
(11/12) Installing tini (0.19.0-r1)
(12/12) Installing yarn (1.22.19-r0)
Executing busybox-1.35.0-r29.trigger
Executing ca-certificates-20220614-r4.trigger
OK: 53 MiB in 27 packages
Removing intermediate container 800029d994ba
---> 3effb5c4f5c4
Step 10/14 : WORKDIR /app
---> Running in d090d9f3943a
Removing intermediate container d090d9f3943a
---> fc1163cf2636
Step 11/14 : COPY --from=base /app /app
---> 8c4ebbbbe62e
Step 12/14 : ADD . .
---> b137babdf87f
Step 13/14 : ENTRYPOINT ["/sbin/tini","-g", "--"]
---> Running in 43902567b8b3
Removing intermediate container 43902567b8b3
---> bef008eaeeee
Step 14/14 : CMD ["node", "app.js"]
---> Running in 3f92b737a947
Removing intermediate container 3f92b737a947
---> 7ab2984517c1
Successfully built 7ab2984517c1
Successfully tagged actual-server:latest
***@***.***:~/appdata/test/actual-server $ docker run -p 5006:5006 actual-server
Listening on :::5006...
[cid:a4835a4e-ebc7-4e83-a072-ae7faae481d8]
it appears that it is running and functioning with the alpine version as well. let me know if you have any other questions. I don't notice much speed difference between the original and alpine versions. They both seems to run smoothly once up and running. I hope that helps tho.
…________________________________
From: James Mortensen ***@***.***>
Sent: Thursday, February 16, 2023 9:44 PM
To: actualbudget/actual-server ***@***.***>
Cc: jayket ***@***.***>; Mention ***@***.***>
Subject: Re: [actualbudget/actual-server] armv7 support (Issue #99)
@jayket<https://github.com/jayket> @vonahnen<https://github.com/vonahnen> can you confirm that it runs using the existing Dockerfile and Dockerfile.alpine images? @jayket<https://github.com/jayket> it sounds like you already succeeded with the Dockerfile, but what about the Dockerfile.alpine?
Here's the instructions to build and run for Alpine, assuming you're doing this on a Raspberry Pi:
git clone https://github.com/actualbudget/actual-server.git
cd actual-server
docker build -t actual-server -f Dockerfile.alpine .
docker run -p 5006:5006 actual-server
In the pull-request #141<#141>, I modified the docker workflow to include building for the target linux/arm/v7. If you confirm it works, then we can have a maintainer review and merge the changes so that armv7 is included in Docker Hub.
—
Reply to this email directly, view it on GitHub<#99 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AZ5NWRVBL6SDKD7DF6NLKWTWX3QXJANCNFSM6AAAAAATNCSLPM>.
You are receiving this because you were mentioned.Message ID: ***@***.***>
|
As far as I know, Actual runs locally and then it syncs the changes which makes it very fast and it's hard to tell be difference. Some of the benefits of running the alpine container are:
|
To be fair the is nothing in the code that relies on native binaries for anything. the server itself is pretty straightforward as far as sync goes and the arm v7 support should work fine. the conversion of the image to alpine should be a separate discussion / issue IMHO. |
Users in #99 report that Actual in Docker runs on armv7 platforms, although a bit sluggish. I confirmed that the base images for Debian and Alpine support the linux/arm/v7 target and have added them to the platform list in the GitHub Actions workflow. At least one user confirms it works with the bullseye default `Dockerfile`, but before merging it would be great if someone can confirm it works with the Dockerfile.alpine image: ``` git clone https://github.com/jamesmortensen/actual-server.git cd actual-server git checkout armv7-image docker build -t actual-server -f Dockerfile.alpine . docker run -p 5006:5006 actual-server ``` --------- Co-authored-by: Jed Fox <git@jedfox.com>
Seems to me this is solved after merging #141 Can someone verify and let me know? |
Closing for now. Please let me know if this is not yet fully addressed. |
It seems that what's available on Docker Hub are amd64 and arm64 images, but sadly no armv7 image. I'd love to be able to run actual-server on some older armv7 boards I have, and was wondering if support could be added.
The text was updated successfully, but these errors were encountered: