Files
cpo_test/compose.yaml
din9xtr 6d721dba79 feat: add cron scheduling and update services
- Added go-crond library to Dockerfile for task scheduling
- Created schedule service in compose.yaml with go-crond
- Added cron configuration file: docker/cron/laravel
- Updated README.md
- Improved service configurations with health checks
- Switched to base frankenphp image
2026-02-08 00:15:35 +07:00

122 lines
2.9 KiB
YAML

services:
app:
image: laravel_frankenphp
build:
context: .
dockerfile: docker/Dockerfile
container_name: laravel_frankenphp
restart: unless-stopped
working_dir: /var/www
user: "${UID:-1000}:${GID:-1000}"
volumes:
- ./laravel:/var/www
- ./docker/Caddyfile:/etc/frankenphp/Caddyfile
- caddy_data:/data
ports:
- "8080:80"
- "8443:443"
environment:
USER_ID: "${UID:-1000}"
GROUP_ID: "${GID:-1000}"
APP_ENV: local
APP_DEBUG: true
APP_URL: http://localhost
DB_CONNECTION: pgsql
DB_HOST: postgres
DB_PORT: 5432
DB_DATABASE: laravel
DB_USERNAME: laravel
DB_PASSWORD: secret
depends_on:
postgres:
condition: service_healthy
networks:
- laravel_network
postgres:
image: postgres:16-alpine
container_name: laravel_postgres
restart: unless-stopped
ports:
- "5432:5432"
environment:
POSTGRES_DB: laravel
POSTGRES_USER: laravel
POSTGRES_PASSWORD: secret
POSTGRES_INITDB_ARGS: "--encoding=UTF8 --locale=C"
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- laravel_network
healthcheck:
test: [ "CMD-SHELL", "pg_isready -U laravel -d laravel" ]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
pgadmin:
image: dpage/pgadmin4:latest
container_name: laravel_pgadmin
restart: unless-stopped
ports:
- "8081:80"
environment:
PGADMIN_DEFAULT_EMAIL: admin@admin.com
PGADMIN_DEFAULT_PASSWORD: admin
volumes:
- pgadmin_data:/var/lib/pgadmin
depends_on:
- postgres
networks:
- laravel_network
queue:
image: laravel_frankenphp
container_name: laravel_queue
working_dir: /var/www
restart: unless-stopped
command: php artisan queue:work --verbose --tries=3 --sleep=3
healthcheck:
test: [ "CMD", "php", "artisan", "queue:monitor", "default" ]
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
volumes:
- ./laravel:/var/www
depends_on:
postgres:
condition: service_healthy
networks:
- laravel_network
schedule:
image: laravel_frankenphp
container_name: laravel_schedule
restart: unless-stopped
working_dir: /var/www
user: "${UID:-1000}:${GID:-1000}"
volumes:
- ./laravel:/var/www
- ./docker/cron:/etc/cron.d:ro
command:
- "go-crond"
- "--default-user=${UID:-1000}"
- "--allow-unprivileged"
- "--include=/etc/cron.d"
- "--verbose"
healthcheck:
test: [ "CMD", "pgrep", "-f", "go-crond" ]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
depends_on:
- app
networks:
- laravel_network
networks:
laravel_network:
driver: bridge
volumes:
caddy_data:
postgres_data:
pgadmin_data: