remoteEaze
Deployment

Docker Compose: Source Build

Build images from the local checkout with Docker Compose, with optional Infisical bypass.

Last updated

This page covers:

  • docker-compose.source.yml

Use this path when you want to build the app from the repository instead of pulling prebuilt runtime images.

What this path requires

You need:

  1. Docker with Compose support
  2. a populated .env
  3. source checkout

Infisical or raw envs

This path supports both:

With Infisical

Set:

INFISICAL_PROJECT_ID=
INFISICAL_ENV=dev
INFISICAL_TOKEN_API=
INFISICAL_TOKEN_WORKER=
INFISICAL_TOKEN_MIGRATE=
INFISICAL_TOKEN_TOOLS=

Without Infisical

Set:

SKIP_INFISICAL=true

Then provide the full application env set directly. See Environment Reference.

What this compose file creates

It creates:

  • postgres
  • redis
  • api
  • worker
  • web
  • migrate

Optional profiles:

  • docs
  • tools

Standard deployment flow

docker compose -f docker-compose.source.yml build
docker compose -f docker-compose.source.yml up -d

Common follow-up commands:

docker compose -f docker-compose.source.yml ps
docker compose -f docker-compose.source.yml logs --tail=200 api worker web migrate
docker compose -f docker-compose.source.yml --profile tools build tools
docker compose -f docker-compose.source.yml --profile tools run --rm \
  -e SYSTEM_ADMIN_PASSWORD="YourStrongPasswordHere" \
  tools pnpm seed:system-admin

The tools profile is not started by up -d. Build it explicitly before running seeds or other operator commands through Compose.

If you are using SKIP_INFISICAL=true, the tools and migrate containers still validate the same runtime config schema as the app. A partial .env is not enough.

Ports

Default host mappings:

ServiceDefault host portContainer port
API30003000
Web51738080
Docs30013000

ArcLocale note

Normal deployment builds do not need translation-provider API keys or extra npm registry auth.

The web build is forced into ArcLocale cache-only mode during Docker builds. That means:

  • the build uses committed translation cache
  • no translation API calls happen during a normal deployment build
  • missing cache entries fail the build instead of silently reaching out to a provider

When to choose this path

Choose source build when:

  • you want full control of the build on your host
  • GHCR access is not convenient yet

Next step

After the stack is up, continue with Routing and Domains and Post-Deploy Bootstrap.

On this page