2026-01-18 21:57:15 +00:00
|
|
|
services:
|
feat(docker): replace stale Sail compose with self-contained stack
The previous compose.yaml referenced ./vendor/laravel/sail/runtimes/8.5
which was never wired up (sail isn't installed and the runtime path
doesn't exist), so docker compose up failed out of the box. It also
lacked Reverb, queue workers, and the scheduler.
The new compose.yaml:
- Builds the dev target of docker/Dockerfile so a single
`docker compose up --build` brings up the entire stack with no host
PHP or Node prerequisites.
- Bind-mounts the project root for hot-reload, with named volumes for
vendor/ and node_modules/ so image-baked deps survive the bind.
- Pins Postgres to 16-alpine (matches CI) and Redis to 7-alpine.
- Healthchecks gate `app` startup until pgsql and redis are ready.
- Sets DB_HOST=pgsql, DB_USERNAME=postgres, REDIS_HOST=redis as
process env so .env.testing's pre-existing CI defaults
(DB_HOST=127.0.0.1, DB_USERNAME=root) don't break tests run from
inside the container.
compose.override.yaml.example documents per-developer customizations
(UID/GID alignment on Linux, port conflicts, Xdebug, Selenium) without
forcing a specific workflow. .env.testing.local is added to .gitignore
as a safety net for any future per-developer testing override.
2026-05-09 02:00:24 +00:00
|
|
|
app:
|
2026-01-18 21:57:15 +00:00
|
|
|
build:
|
feat(docker): replace stale Sail compose with self-contained stack
The previous compose.yaml referenced ./vendor/laravel/sail/runtimes/8.5
which was never wired up (sail isn't installed and the runtime path
doesn't exist), so docker compose up failed out of the box. It also
lacked Reverb, queue workers, and the scheduler.
The new compose.yaml:
- Builds the dev target of docker/Dockerfile so a single
`docker compose up --build` brings up the entire stack with no host
PHP or Node prerequisites.
- Bind-mounts the project root for hot-reload, with named volumes for
vendor/ and node_modules/ so image-baked deps survive the bind.
- Pins Postgres to 16-alpine (matches CI) and Redis to 7-alpine.
- Healthchecks gate `app` startup until pgsql and redis are ready.
- Sets DB_HOST=pgsql, DB_USERNAME=postgres, REDIS_HOST=redis as
process env so .env.testing's pre-existing CI defaults
(DB_HOST=127.0.0.1, DB_USERNAME=root) don't break tests run from
inside the container.
compose.override.yaml.example documents per-developer customizations
(UID/GID alignment on Linux, port conflicts, Xdebug, Selenium) without
forcing a specific workflow. .env.testing.local is added to .gitignore
as a safety net for any future per-developer testing override.
2026-05-09 02:00:24 +00:00
|
|
|
context: .
|
|
|
|
|
dockerfile: docker/Dockerfile
|
|
|
|
|
target: dev
|
2026-01-18 21:57:15 +00:00
|
|
|
args:
|
feat(docker): replace stale Sail compose with self-contained stack
The previous compose.yaml referenced ./vendor/laravel/sail/runtimes/8.5
which was never wired up (sail isn't installed and the runtime path
doesn't exist), so docker compose up failed out of the box. It also
lacked Reverb, queue workers, and the scheduler.
The new compose.yaml:
- Builds the dev target of docker/Dockerfile so a single
`docker compose up --build` brings up the entire stack with no host
PHP or Node prerequisites.
- Bind-mounts the project root for hot-reload, with named volumes for
vendor/ and node_modules/ so image-baked deps survive the bind.
- Pins Postgres to 16-alpine (matches CI) and Redis to 7-alpine.
- Healthchecks gate `app` startup until pgsql and redis are ready.
- Sets DB_HOST=pgsql, DB_USERNAME=postgres, REDIS_HOST=redis as
process env so .env.testing's pre-existing CI defaults
(DB_HOST=127.0.0.1, DB_USERNAME=root) don't break tests run from
inside the container.
compose.override.yaml.example documents per-developer customizations
(UID/GID alignment on Linux, port conflicts, Xdebug, Selenium) without
forcing a specific workflow. .env.testing.local is added to .gitignore
as a safety net for any future per-developer testing override.
2026-05-09 02:00:24 +00:00
|
|
|
UID: ${UID:-1000}
|
|
|
|
|
GID: ${GID:-1000}
|
|
|
|
|
image: trypost-app:dev
|
2026-01-18 21:57:15 +00:00
|
|
|
ports:
|
feat(docker): replace stale Sail compose with self-contained stack
The previous compose.yaml referenced ./vendor/laravel/sail/runtimes/8.5
which was never wired up (sail isn't installed and the runtime path
doesn't exist), so docker compose up failed out of the box. It also
lacked Reverb, queue workers, and the scheduler.
The new compose.yaml:
- Builds the dev target of docker/Dockerfile so a single
`docker compose up --build` brings up the entire stack with no host
PHP or Node prerequisites.
- Bind-mounts the project root for hot-reload, with named volumes for
vendor/ and node_modules/ so image-baked deps survive the bind.
- Pins Postgres to 16-alpine (matches CI) and Redis to 7-alpine.
- Healthchecks gate `app` startup until pgsql and redis are ready.
- Sets DB_HOST=pgsql, DB_USERNAME=postgres, REDIS_HOST=redis as
process env so .env.testing's pre-existing CI defaults
(DB_HOST=127.0.0.1, DB_USERNAME=root) don't break tests run from
inside the container.
compose.override.yaml.example documents per-developer customizations
(UID/GID alignment on Linux, port conflicts, Xdebug, Selenium) without
forcing a specific workflow. .env.testing.local is added to .gitignore
as a safety net for any future per-developer testing override.
2026-05-09 02:00:24 +00:00
|
|
|
- '${APP_PORT:-8000}:80'
|
|
|
|
|
- '${REVERB_PORT:-8080}:8080'
|
|
|
|
|
- '${VITE_PORT:-5173}:5173'
|
2026-01-18 21:57:15 +00:00
|
|
|
environment:
|
feat(docker): replace stale Sail compose with self-contained stack
The previous compose.yaml referenced ./vendor/laravel/sail/runtimes/8.5
which was never wired up (sail isn't installed and the runtime path
doesn't exist), so docker compose up failed out of the box. It also
lacked Reverb, queue workers, and the scheduler.
The new compose.yaml:
- Builds the dev target of docker/Dockerfile so a single
`docker compose up --build` brings up the entire stack with no host
PHP or Node prerequisites.
- Bind-mounts the project root for hot-reload, with named volumes for
vendor/ and node_modules/ so image-baked deps survive the bind.
- Pins Postgres to 16-alpine (matches CI) and Redis to 7-alpine.
- Healthchecks gate `app` startup until pgsql and redis are ready.
- Sets DB_HOST=pgsql, DB_USERNAME=postgres, REDIS_HOST=redis as
process env so .env.testing's pre-existing CI defaults
(DB_HOST=127.0.0.1, DB_USERNAME=root) don't break tests run from
inside the container.
compose.override.yaml.example documents per-developer customizations
(UID/GID alignment on Linux, port conflicts, Xdebug, Selenium) without
forcing a specific workflow. .env.testing.local is added to .gitignore
as a safety net for any future per-developer testing override.
2026-05-09 02:00:24 +00:00
|
|
|
TRYPOST_DOCKER_BOOTSTRAP: '1'
|
|
|
|
|
UID: ${UID:-1000}
|
|
|
|
|
GID: ${GID:-1000}
|
|
|
|
|
# Real env vars take precedence over .env.testing (which pins
|
|
|
|
|
# DB_HOST=127.0.0.1, DB_USERNAME=root). Without these, the test
|
|
|
|
|
# suite can't see Postgres / Redis from inside the container.
|
|
|
|
|
DB_HOST: pgsql
|
|
|
|
|
DB_USERNAME: postgres
|
|
|
|
|
REDIS_HOST: redis
|
2026-01-18 21:57:15 +00:00
|
|
|
volumes:
|
feat(docker): replace stale Sail compose with self-contained stack
The previous compose.yaml referenced ./vendor/laravel/sail/runtimes/8.5
which was never wired up (sail isn't installed and the runtime path
doesn't exist), so docker compose up failed out of the box. It also
lacked Reverb, queue workers, and the scheduler.
The new compose.yaml:
- Builds the dev target of docker/Dockerfile so a single
`docker compose up --build` brings up the entire stack with no host
PHP or Node prerequisites.
- Bind-mounts the project root for hot-reload, with named volumes for
vendor/ and node_modules/ so image-baked deps survive the bind.
- Pins Postgres to 16-alpine (matches CI) and Redis to 7-alpine.
- Healthchecks gate `app` startup until pgsql and redis are ready.
- Sets DB_HOST=pgsql, DB_USERNAME=postgres, REDIS_HOST=redis as
process env so .env.testing's pre-existing CI defaults
(DB_HOST=127.0.0.1, DB_USERNAME=root) don't break tests run from
inside the container.
compose.override.yaml.example documents per-developer customizations
(UID/GID alignment on Linux, port conflicts, Xdebug, Selenium) without
forcing a specific workflow. .env.testing.local is added to .gitignore
as a safety net for any future per-developer testing override.
2026-05-09 02:00:24 +00:00
|
|
|
- .:/var/www/html
|
|
|
|
|
- app-vendor:/var/www/html/vendor
|
|
|
|
|
- app-node-modules:/var/www/html/node_modules
|
|
|
|
|
extra_hosts:
|
|
|
|
|
- 'host.docker.internal:host-gateway'
|
2026-01-18 21:57:15 +00:00
|
|
|
depends_on:
|
feat(docker): replace stale Sail compose with self-contained stack
The previous compose.yaml referenced ./vendor/laravel/sail/runtimes/8.5
which was never wired up (sail isn't installed and the runtime path
doesn't exist), so docker compose up failed out of the box. It also
lacked Reverb, queue workers, and the scheduler.
The new compose.yaml:
- Builds the dev target of docker/Dockerfile so a single
`docker compose up --build` brings up the entire stack with no host
PHP or Node prerequisites.
- Bind-mounts the project root for hot-reload, with named volumes for
vendor/ and node_modules/ so image-baked deps survive the bind.
- Pins Postgres to 16-alpine (matches CI) and Redis to 7-alpine.
- Healthchecks gate `app` startup until pgsql and redis are ready.
- Sets DB_HOST=pgsql, DB_USERNAME=postgres, REDIS_HOST=redis as
process env so .env.testing's pre-existing CI defaults
(DB_HOST=127.0.0.1, DB_USERNAME=root) don't break tests run from
inside the container.
compose.override.yaml.example documents per-developer customizations
(UID/GID alignment on Linux, port conflicts, Xdebug, Selenium) without
forcing a specific workflow. .env.testing.local is added to .gitignore
as a safety net for any future per-developer testing override.
2026-05-09 02:00:24 +00:00
|
|
|
pgsql:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
redis:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
healthcheck:
|
|
|
|
|
test: ['CMD', 'curl', '-fsS', 'http://127.0.0.1/up']
|
|
|
|
|
interval: 30s
|
|
|
|
|
timeout: 5s
|
|
|
|
|
retries: 5
|
|
|
|
|
start_period: 90s
|
|
|
|
|
|
2026-01-18 21:57:15 +00:00
|
|
|
pgsql:
|
feat(docker): replace stale Sail compose with self-contained stack
The previous compose.yaml referenced ./vendor/laravel/sail/runtimes/8.5
which was never wired up (sail isn't installed and the runtime path
doesn't exist), so docker compose up failed out of the box. It also
lacked Reverb, queue workers, and the scheduler.
The new compose.yaml:
- Builds the dev target of docker/Dockerfile so a single
`docker compose up --build` brings up the entire stack with no host
PHP or Node prerequisites.
- Bind-mounts the project root for hot-reload, with named volumes for
vendor/ and node_modules/ so image-baked deps survive the bind.
- Pins Postgres to 16-alpine (matches CI) and Redis to 7-alpine.
- Healthchecks gate `app` startup until pgsql and redis are ready.
- Sets DB_HOST=pgsql, DB_USERNAME=postgres, REDIS_HOST=redis as
process env so .env.testing's pre-existing CI defaults
(DB_HOST=127.0.0.1, DB_USERNAME=root) don't break tests run from
inside the container.
compose.override.yaml.example documents per-developer customizations
(UID/GID alignment on Linux, port conflicts, Xdebug, Selenium) without
forcing a specific workflow. .env.testing.local is added to .gitignore
as a safety net for any future per-developer testing override.
2026-05-09 02:00:24 +00:00
|
|
|
image: postgres:16-alpine
|
2026-01-18 21:57:15 +00:00
|
|
|
environment:
|
feat(docker): replace stale Sail compose with self-contained stack
The previous compose.yaml referenced ./vendor/laravel/sail/runtimes/8.5
which was never wired up (sail isn't installed and the runtime path
doesn't exist), so docker compose up failed out of the box. It also
lacked Reverb, queue workers, and the scheduler.
The new compose.yaml:
- Builds the dev target of docker/Dockerfile so a single
`docker compose up --build` brings up the entire stack with no host
PHP or Node prerequisites.
- Bind-mounts the project root for hot-reload, with named volumes for
vendor/ and node_modules/ so image-baked deps survive the bind.
- Pins Postgres to 16-alpine (matches CI) and Redis to 7-alpine.
- Healthchecks gate `app` startup until pgsql and redis are ready.
- Sets DB_HOST=pgsql, DB_USERNAME=postgres, REDIS_HOST=redis as
process env so .env.testing's pre-existing CI defaults
(DB_HOST=127.0.0.1, DB_USERNAME=root) don't break tests run from
inside the container.
compose.override.yaml.example documents per-developer customizations
(UID/GID alignment on Linux, port conflicts, Xdebug, Selenium) without
forcing a specific workflow. .env.testing.local is added to .gitignore
as a safety net for any future per-developer testing override.
2026-05-09 02:00:24 +00:00
|
|
|
POSTGRES_DB: ${DB_DATABASE:-trypost}
|
|
|
|
|
POSTGRES_USER: ${DB_USERNAME:-postgres}
|
|
|
|
|
POSTGRES_PASSWORD: ${DB_PASSWORD:-password}
|
2026-01-18 21:57:15 +00:00
|
|
|
volumes:
|
feat(docker): replace stale Sail compose with self-contained stack
The previous compose.yaml referenced ./vendor/laravel/sail/runtimes/8.5
which was never wired up (sail isn't installed and the runtime path
doesn't exist), so docker compose up failed out of the box. It also
lacked Reverb, queue workers, and the scheduler.
The new compose.yaml:
- Builds the dev target of docker/Dockerfile so a single
`docker compose up --build` brings up the entire stack with no host
PHP or Node prerequisites.
- Bind-mounts the project root for hot-reload, with named volumes for
vendor/ and node_modules/ so image-baked deps survive the bind.
- Pins Postgres to 16-alpine (matches CI) and Redis to 7-alpine.
- Healthchecks gate `app` startup until pgsql and redis are ready.
- Sets DB_HOST=pgsql, DB_USERNAME=postgres, REDIS_HOST=redis as
process env so .env.testing's pre-existing CI defaults
(DB_HOST=127.0.0.1, DB_USERNAME=root) don't break tests run from
inside the container.
compose.override.yaml.example documents per-developer customizations
(UID/GID alignment on Linux, port conflicts, Xdebug, Selenium) without
forcing a specific workflow. .env.testing.local is added to .gitignore
as a safety net for any future per-developer testing override.
2026-05-09 02:00:24 +00:00
|
|
|
- pgdata:/var/lib/postgresql/data
|
|
|
|
|
- ./docker/postgres-init.sh:/docker-entrypoint-initdb.d/10-create-test-db.sh:ro
|
|
|
|
|
ports:
|
|
|
|
|
- '${FORWARD_DB_PORT:-5432}:5432'
|
2026-01-18 21:57:15 +00:00
|
|
|
healthcheck:
|
feat(docker): replace stale Sail compose with self-contained stack
The previous compose.yaml referenced ./vendor/laravel/sail/runtimes/8.5
which was never wired up (sail isn't installed and the runtime path
doesn't exist), so docker compose up failed out of the box. It also
lacked Reverb, queue workers, and the scheduler.
The new compose.yaml:
- Builds the dev target of docker/Dockerfile so a single
`docker compose up --build` brings up the entire stack with no host
PHP or Node prerequisites.
- Bind-mounts the project root for hot-reload, with named volumes for
vendor/ and node_modules/ so image-baked deps survive the bind.
- Pins Postgres to 16-alpine (matches CI) and Redis to 7-alpine.
- Healthchecks gate `app` startup until pgsql and redis are ready.
- Sets DB_HOST=pgsql, DB_USERNAME=postgres, REDIS_HOST=redis as
process env so .env.testing's pre-existing CI defaults
(DB_HOST=127.0.0.1, DB_USERNAME=root) don't break tests run from
inside the container.
compose.override.yaml.example documents per-developer customizations
(UID/GID alignment on Linux, port conflicts, Xdebug, Selenium) without
forcing a specific workflow. .env.testing.local is added to .gitignore
as a safety net for any future per-developer testing override.
2026-05-09 02:00:24 +00:00
|
|
|
test: ['CMD-SHELL', 'pg_isready -U ${DB_USERNAME:-postgres} -d ${DB_DATABASE:-trypost}']
|
|
|
|
|
interval: 10s
|
2026-01-18 21:57:15 +00:00
|
|
|
timeout: 5s
|
feat(docker): replace stale Sail compose with self-contained stack
The previous compose.yaml referenced ./vendor/laravel/sail/runtimes/8.5
which was never wired up (sail isn't installed and the runtime path
doesn't exist), so docker compose up failed out of the box. It also
lacked Reverb, queue workers, and the scheduler.
The new compose.yaml:
- Builds the dev target of docker/Dockerfile so a single
`docker compose up --build` brings up the entire stack with no host
PHP or Node prerequisites.
- Bind-mounts the project root for hot-reload, with named volumes for
vendor/ and node_modules/ so image-baked deps survive the bind.
- Pins Postgres to 16-alpine (matches CI) and Redis to 7-alpine.
- Healthchecks gate `app` startup until pgsql and redis are ready.
- Sets DB_HOST=pgsql, DB_USERNAME=postgres, REDIS_HOST=redis as
process env so .env.testing's pre-existing CI defaults
(DB_HOST=127.0.0.1, DB_USERNAME=root) don't break tests run from
inside the container.
compose.override.yaml.example documents per-developer customizations
(UID/GID alignment on Linux, port conflicts, Xdebug, Selenium) without
forcing a specific workflow. .env.testing.local is added to .gitignore
as a safety net for any future per-developer testing override.
2026-05-09 02:00:24 +00:00
|
|
|
retries: 5
|
|
|
|
|
|
2026-01-18 21:57:15 +00:00
|
|
|
redis:
|
feat(docker): replace stale Sail compose with self-contained stack
The previous compose.yaml referenced ./vendor/laravel/sail/runtimes/8.5
which was never wired up (sail isn't installed and the runtime path
doesn't exist), so docker compose up failed out of the box. It also
lacked Reverb, queue workers, and the scheduler.
The new compose.yaml:
- Builds the dev target of docker/Dockerfile so a single
`docker compose up --build` brings up the entire stack with no host
PHP or Node prerequisites.
- Bind-mounts the project root for hot-reload, with named volumes for
vendor/ and node_modules/ so image-baked deps survive the bind.
- Pins Postgres to 16-alpine (matches CI) and Redis to 7-alpine.
- Healthchecks gate `app` startup until pgsql and redis are ready.
- Sets DB_HOST=pgsql, DB_USERNAME=postgres, REDIS_HOST=redis as
process env so .env.testing's pre-existing CI defaults
(DB_HOST=127.0.0.1, DB_USERNAME=root) don't break tests run from
inside the container.
compose.override.yaml.example documents per-developer customizations
(UID/GID alignment on Linux, port conflicts, Xdebug, Selenium) without
forcing a specific workflow. .env.testing.local is added to .gitignore
as a safety net for any future per-developer testing override.
2026-05-09 02:00:24 +00:00
|
|
|
image: redis:7-alpine
|
|
|
|
|
command: redis-server --appendonly yes
|
|
|
|
|
volumes:
|
|
|
|
|
- redisdata:/data
|
2026-01-18 21:57:15 +00:00
|
|
|
ports:
|
|
|
|
|
- '${FORWARD_REDIS_PORT:-6379}:6379'
|
|
|
|
|
healthcheck:
|
feat(docker): replace stale Sail compose with self-contained stack
The previous compose.yaml referenced ./vendor/laravel/sail/runtimes/8.5
which was never wired up (sail isn't installed and the runtime path
doesn't exist), so docker compose up failed out of the box. It also
lacked Reverb, queue workers, and the scheduler.
The new compose.yaml:
- Builds the dev target of docker/Dockerfile so a single
`docker compose up --build` brings up the entire stack with no host
PHP or Node prerequisites.
- Bind-mounts the project root for hot-reload, with named volumes for
vendor/ and node_modules/ so image-baked deps survive the bind.
- Pins Postgres to 16-alpine (matches CI) and Redis to 7-alpine.
- Healthchecks gate `app` startup until pgsql and redis are ready.
- Sets DB_HOST=pgsql, DB_USERNAME=postgres, REDIS_HOST=redis as
process env so .env.testing's pre-existing CI defaults
(DB_HOST=127.0.0.1, DB_USERNAME=root) don't break tests run from
inside the container.
compose.override.yaml.example documents per-developer customizations
(UID/GID alignment on Linux, port conflicts, Xdebug, Selenium) without
forcing a specific workflow. .env.testing.local is added to .gitignore
as a safety net for any future per-developer testing override.
2026-05-09 02:00:24 +00:00
|
|
|
test: ['CMD', 'redis-cli', 'ping']
|
|
|
|
|
interval: 10s
|
|
|
|
|
timeout: 3s
|
|
|
|
|
retries: 5
|
|
|
|
|
|
2026-01-18 21:57:15 +00:00
|
|
|
mailpit:
|
feat(docker): replace stale Sail compose with self-contained stack
The previous compose.yaml referenced ./vendor/laravel/sail/runtimes/8.5
which was never wired up (sail isn't installed and the runtime path
doesn't exist), so docker compose up failed out of the box. It also
lacked Reverb, queue workers, and the scheduler.
The new compose.yaml:
- Builds the dev target of docker/Dockerfile so a single
`docker compose up --build` brings up the entire stack with no host
PHP or Node prerequisites.
- Bind-mounts the project root for hot-reload, with named volumes for
vendor/ and node_modules/ so image-baked deps survive the bind.
- Pins Postgres to 16-alpine (matches CI) and Redis to 7-alpine.
- Healthchecks gate `app` startup until pgsql and redis are ready.
- Sets DB_HOST=pgsql, DB_USERNAME=postgres, REDIS_HOST=redis as
process env so .env.testing's pre-existing CI defaults
(DB_HOST=127.0.0.1, DB_USERNAME=root) don't break tests run from
inside the container.
compose.override.yaml.example documents per-developer customizations
(UID/GID alignment on Linux, port conflicts, Xdebug, Selenium) without
forcing a specific workflow. .env.testing.local is added to .gitignore
as a safety net for any future per-developer testing override.
2026-05-09 02:00:24 +00:00
|
|
|
image: axllent/mailpit:latest
|
2026-01-18 21:57:15 +00:00
|
|
|
ports:
|
feat(docker): replace stale Sail compose with self-contained stack
The previous compose.yaml referenced ./vendor/laravel/sail/runtimes/8.5
which was never wired up (sail isn't installed and the runtime path
doesn't exist), so docker compose up failed out of the box. It also
lacked Reverb, queue workers, and the scheduler.
The new compose.yaml:
- Builds the dev target of docker/Dockerfile so a single
`docker compose up --build` brings up the entire stack with no host
PHP or Node prerequisites.
- Bind-mounts the project root for hot-reload, with named volumes for
vendor/ and node_modules/ so image-baked deps survive the bind.
- Pins Postgres to 16-alpine (matches CI) and Redis to 7-alpine.
- Healthchecks gate `app` startup until pgsql and redis are ready.
- Sets DB_HOST=pgsql, DB_USERNAME=postgres, REDIS_HOST=redis as
process env so .env.testing's pre-existing CI defaults
(DB_HOST=127.0.0.1, DB_USERNAME=root) don't break tests run from
inside the container.
compose.override.yaml.example documents per-developer customizations
(UID/GID alignment on Linux, port conflicts, Xdebug, Selenium) without
forcing a specific workflow. .env.testing.local is added to .gitignore
as a safety net for any future per-developer testing override.
2026-05-09 02:00:24 +00:00
|
|
|
- '${FORWARD_MAILPIT_SMTP_PORT:-1025}:1025'
|
|
|
|
|
- '${FORWARD_MAILPIT_UI_PORT:-8025}:8025'
|
|
|
|
|
|
2026-01-18 21:57:15 +00:00
|
|
|
volumes:
|
feat(docker): replace stale Sail compose with self-contained stack
The previous compose.yaml referenced ./vendor/laravel/sail/runtimes/8.5
which was never wired up (sail isn't installed and the runtime path
doesn't exist), so docker compose up failed out of the box. It also
lacked Reverb, queue workers, and the scheduler.
The new compose.yaml:
- Builds the dev target of docker/Dockerfile so a single
`docker compose up --build` brings up the entire stack with no host
PHP or Node prerequisites.
- Bind-mounts the project root for hot-reload, with named volumes for
vendor/ and node_modules/ so image-baked deps survive the bind.
- Pins Postgres to 16-alpine (matches CI) and Redis to 7-alpine.
- Healthchecks gate `app` startup until pgsql and redis are ready.
- Sets DB_HOST=pgsql, DB_USERNAME=postgres, REDIS_HOST=redis as
process env so .env.testing's pre-existing CI defaults
(DB_HOST=127.0.0.1, DB_USERNAME=root) don't break tests run from
inside the container.
compose.override.yaml.example documents per-developer customizations
(UID/GID alignment on Linux, port conflicts, Xdebug, Selenium) without
forcing a specific workflow. .env.testing.local is added to .gitignore
as a safety net for any future per-developer testing override.
2026-05-09 02:00:24 +00:00
|
|
|
pgdata:
|
|
|
|
|
redisdata:
|
|
|
|
|
app-vendor:
|
|
|
|
|
app-node-modules:
|