mirror of
https://github.com/magnus919/agent-skills.git
synced 2026-09-11 19:47:12 +03:00
1.9 KiB
1.9 KiB
Development, Builds, CI, and Production
Compose Watch
Watch services built from local source:
services:
web:
build: .
command: npm start
develop:
watch:
- action: sync
path: ./src
target: /app/src
ignore:
- node_modules/
- action: rebuild
path: package.json
Run docker compose up --watch or docker compose watch. sync is for hot-reloadable source, sync+restart for changed configuration, and rebuild for dependencies or image inputs. The image needs stat, mkdir, and rmdir, and the runtime user must be able to write to the target path. Do not sync host-native dependency trees such as node_modules across architectures.
Build and CI loop
docker compose build --pull
docker compose config --quiet
docker compose -p ci-${CI_JOB_ID:?CI_JOB_ID required} up -d --wait
docker compose -p ci-${CI_JOB_ID:?CI_JOB_ID required} ps
docker compose -p ci-${CI_JOB_ID:?CI_JOB_ID required} logs --no-color --tail=200
docker compose -p ci-${CI_JOB_ID:?CI_JOB_ID required} down --volumes --remove-orphans
Use an isolated project name and deterministic image tags in CI. Do not use destructive volume cleanup against shared environments.
Production baseline
- Deploy immutable image tags or digests.
- Define healthchecks and graceful
stop_grace_period. - Set restart policy deliberately (
unless-stoppedfor long-running services,on-failurefor jobs). - Bound memory/CPU only after measuring and verifying target implementation support.
- Configure log rotation or a centralized logging driver.
- Run as non-root where supported; use
read_only: trueplus explicit writable mounts when practical. - Keep databases off public host ports unless required.
- Back up and restore-test named volumes; Compose does not create a backup strategy.
- Verify externally reachable endpoints after deployment.
configpassing is not deployment verification.