[PR #6292] [WIP] Add improved docker compose configuration for production and cross-platform builds. #6430

Closed
opened 2026-02-28 21:28:12 -06:00 by GiteaMirror · 0 comments
Owner

Original Pull Request: https://github.com/actualbudget/actual/pull/6292

State: closed
Merged: No


This PR does two things:

  1. Renames the existing "docker-compose.yml" file to "docker-compose.dev.yml"
  2. Adds a new "docker-compose.yml" with a production-ready (and cross-platform compatible) configuration

First I'll describe the benefits of the new file. Whether you are on Linux, macOS or Windows, getting started with Actual Budget requires the following steps:

git clone https://github.com/actualbudget/actual
cd actual
docker compose build
docker compose up

The configuration is compatible with existing environment variables such as ACTUAL_PORT or ACTUAL_DATA_DIR. It should be possible to override using a ".env" file in the cloned directory, or set it in the environment, or set it when calling docker compose up. This should be production-ready, though also be useful for development.

It uses the "sync-server.Dockerfile", which (IMHO) should be renamed to "Dockerfile" and kept as default.

The existing configuration will still be available using the following commands:

docker compose -f docker-compose.dev.yml build
docker compose -f docker-compose.dev.yml up

This renamed "dev" configuration, the one now present in the project, requires that you clone the repository, then yarn install at minimum. However--and this is significant--Actual has dependencies, such as Rollup, which install platform-specific binaries based on the host. This means that this dev Docker environment only works if your host is a 64-bit Debian host. It does not work on Windows and I suspect it does not work on macOS either.

It appears the current docker compose configuration was created for a specific user with a specific preference, who works only on Linux. That's fine, though I think a production-ready and cross-platform container is more appropriate for the default.

EDIT: I just tested the "dev" docker compose configuration. I can confirm that it works using these steps:

yarn install
docker compose -f docker-compose.dev.yml build
docker compose -f docker-compose.dev.yml up

...however, it works the same as running:

yarn install
yarn start:browser

Except... running the docker "dev" version used a Docker root user which changed (AKA, messed up) the permissions in my development folder. I had to change ownership back to my user account in order to run yarn start:browser without errors.

Up to you what you do with this dev configuration. I'm a little confused regarding the benefits

Thank you!

**Original Pull Request:** https://github.com/actualbudget/actual/pull/6292 **State:** closed **Merged:** No --- This PR does two things: 1. Renames the existing "docker-compose.yml" file to "docker-compose.dev.yml" 2. Adds a new "docker-compose.yml" with a production-ready (and cross-platform compatible) configuration First I'll describe the benefits of the new file. Whether you are on Linux, macOS or Windows, getting started with Actual Budget requires the following steps: ```bash git clone https://github.com/actualbudget/actual cd actual docker compose build docker compose up ``` The configuration is compatible with existing environment variables such as `ACTUAL_PORT` or `ACTUAL_DATA_DIR`. It should be possible to override using a ".env" file in the cloned directory, or set it in the environment, or set it when calling `docker compose up`. This should be production-ready, though also be useful for development. It uses the "sync-server.Dockerfile", which (IMHO) should be renamed to "Dockerfile" and kept as default. The existing configuration will still be available using the following commands: ```bash docker compose -f docker-compose.dev.yml build docker compose -f docker-compose.dev.yml up ``` This renamed "dev" configuration, the one now present in the project, requires that you clone the repository, then `yarn install` at minimum. However--and this is significant--Actual has dependencies, such as Rollup, which install platform-specific binaries based on the host. This means that this dev Docker environment **only works if your host is a 64-bit Debian host**. It does not work on Windows and I suspect it does not work on macOS either. It appears the current docker compose configuration was created for a specific user with a specific preference, who works only on Linux. That's fine, though I think a production-ready and cross-platform container is more appropriate for the default. EDIT: I just tested the "dev" docker compose configuration. I can confirm that it works using these steps: ```bash yarn install docker compose -f docker-compose.dev.yml build docker compose -f docker-compose.dev.yml up ``` ...however, it works the same as running: ```bash yarn install yarn start:browser ``` _Except_... running the docker "dev" version used a Docker root user which changed (AKA, messed up) the permissions in my development folder. I had to change ownership back to my user account in order to run `yarn start:browser` without errors. Up to you what you do with this dev configuration. I'm a little confused regarding the benefits Thank you! <!-- Thank you for submitting a pull request! Make sure to follow the instructions to write release notes for your PR — it should only take a minute or two: https://github.com/actualbudget/docs#writing-good-release-notes. Try running yarn generate:release-notes *before* pushing your PR for an interactive experience. -->
GiteaMirror added the pull-request label 2026-02-28 21:28:12 -06:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/actual#6430