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

Closed
opened 2026-05-07 01:56:10 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/actualbudget/actual/pull/6292
Author: @jgranick
Created: 12/4/2025
Status: Closed

Base: masterHead: improve-docker-compose


📝 Commits (6)

  • b66fc32 Move dev docker-compose file (which only works on Linux) to docker-compose.dev.yml
  • a9a61d1 Add docker compose config for production/cross-platform builds
  • ef069b6 Add release notes
  • f825661 [autofix.ci] apply automated fixes
  • e57f210 Update path in .devcontainer
  • 6f0d8fd Remove minor warnings

📊 Changes

6 files changed (+46 additions, -16 deletions)

View changed files

📝 .devcontainer/devcontainer.json (+1 -1)
📝 .devcontainer/docker-compose.yml (+0 -1)
📝 Dockerfile (+1 -1)
docker-compose.dev.yml (+17 -0)
📝 docker-compose.yml (+21 -13)
upcoming-release-notes/6292.md (+6 -0)

📄 Description

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!


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/actualbudget/actual/pull/6292 **Author:** [@jgranick](https://github.com/jgranick) **Created:** 12/4/2025 **Status:** ❌ Closed **Base:** `master` ← **Head:** `improve-docker-compose` --- ### 📝 Commits (6) - [`b66fc32`](https://github.com/actualbudget/actual/commit/b66fc3289c89f1c98006bdc14f7418629bcda153) Move dev docker-compose file (which only works on Linux) to docker-compose.dev.yml - [`a9a61d1`](https://github.com/actualbudget/actual/commit/a9a61d1e594097d8b925f94a7a281cea89daa47c) Add docker compose config for production/cross-platform builds - [`ef069b6`](https://github.com/actualbudget/actual/commit/ef069b6c6cd2471609e13dcd7c76bad33caa1780) Add release notes - [`f825661`](https://github.com/actualbudget/actual/commit/f825661b3968bcfe599fc64236b72c8dcfd994c8) [autofix.ci] apply automated fixes - [`e57f210`](https://github.com/actualbudget/actual/commit/e57f210ac006106f7d3f865d0d67659c9784bca7) Update path in .devcontainer - [`6f0d8fd`](https://github.com/actualbudget/actual/commit/6f0d8fd4a31ff4e6c89aac08386ed1efa9aa71d3) Remove minor warnings ### 📊 Changes **6 files changed** (+46 additions, -16 deletions) <details> <summary>View changed files</summary> 📝 `.devcontainer/devcontainer.json` (+1 -1) 📝 `.devcontainer/docker-compose.yml` (+0 -1) 📝 `Dockerfile` (+1 -1) ➕ `docker-compose.dev.yml` (+17 -0) 📝 `docker-compose.yml` (+21 -13) ➕ `upcoming-release-notes/6292.md` (+6 -0) </details> ### 📄 Description 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. --> --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-05-07 01:56:11 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/actual#60084