Build, run, and debug the Madoc Docker/compose stack with the Docker daemon already running, including rebuilding images, starting/stopping services, inspecting containers/images, and using pm2 inside the madoc-ts container (server/queue/scheduler/auth) plus frontend rebuilds for volume-mounted assets.
Operate the local Madoc Docker Compose stack, rebuild images when code changes, inspect running containers/images, and use pm2 inside madoc-ts to debug processes and logs.
Services you will interact with most often:
gatewaymadoc-tsmadoc-ts-viteshared-postgresgateway-redistasks-apimodel-apiconfig-servicestorage-apisearchokraAlso check docker-compose.test.yml when dealing with test-only services or overrides.
docker compose up -d.docker compose ps and docker compose logs -f madoc-ts.docker compose up -d madoc-ts madoc-ts-vite shared-postgres gateway.pnpm build:vite-server run outside of docker since its a volumedocker compose build madoc-ts madoc-ts-vite.docker compose build --no-cache madoc-ts.docker compose up -d --build madoc-ts.The frontend assets are bind-mounted, so rebuilds must be triggered even when containers are already running. However there is a vite server so during development frontend ONLY fixes should be fine.
madoc-ts-vite keeps its image-baked package.json, pnpm-lock.yaml, and node_modules aligned on purpose. After dependency changes, rebuild the madoc-ts-vite image instead of relying on bind-mounted manifest files.
docker compose exec madoc-ts pnpm run build:frontend.docker compose exec madoc-ts pnpm run build:vite.madoc-ts-vite (ports 3088/3089); restart it if needed: docker compose restart madoc-ts-vite.docker ps.docker compose ps.docker images or docker compose images.docker inspect <container>.docker inspect <container> | rg -n "Mounts".docker compose logs -f madoc-ts.docker compose logs --tail=200 madoc-ts.docker logs -f <container>.madoc-tsmadoc-ts runs pnpm dev, which launches pm2 with ecosystem.config.cjs.
Processes: server, queue, scheduler, auth.
Common commands:
docker compose exec madoc-ts pm2 status.docker compose exec madoc-ts pm2 logs.docker compose exec madoc-ts pm2 logs server.docker compose exec madoc-ts pm2 restart server.docker compose exec madoc-ts pm2 reload all.docker compose down.docker compose down -v.docker image prune.docker info.docker-compose.yml.docker compose restart madoc-ts.pnpm run build:frontend inside the container.curl -sk https://madoc.local/ | grep "Something went wrong."