Files
sides/docker-compose.yml

109 lines
2.6 KiB
YAML

networks:
tckdev_net:
name: tckdev_net
services:
app:
container_name: tckdev-app
build:
context: .
dockerfile: Dockerfile
volumes:
- ./src:/var/www/html
- /etc/localtime:/etc/localtime:ro
depends_on:
postgres:
condition: service_healthy
networks:
- tckdev_net
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "grep -q php-fpm /proc/1/cmdline || exit 1"]
interval: 10s
timeout: 5s
retries: 3
start_period: 30s
environment:
- TZ=Asia/Kuala_Lumpur
- RUN_MIGRATIONS=true
- RUN_SEEDER=true
- ADMIN_EMAIL=${ADMIN_EMAIL:-admin@example.com}
- ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin123}
postgres:
container_name: tckdev-db
image: postgres:16
restart: always
volumes:
- pgdata:/var/lib/postgresql/data
- /etc/localtime:/etc/localtime:ro
environment:
- TZ=Asia/Kuala_Lumpur
- PGTZ=Asia/Kuala_Lumpur
- POSTGRES_DB=${POSTGRES_DB}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
ports:
- "5432:5432"
networks:
- tckdev_net
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-tck} -d ${POSTGRES_DB:-sides_db}"]
interval: 5s
timeout: 5s
retries: 5
web:
container_name: tckdev-web
image: nginx:stable-alpine
restart: always
ports:
- "80:80"
volumes:
- ./src:/var/www/html
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
- /etc/localtime:/etc/localtime:ro
depends_on:
app:
condition: service_healthy
networks:
- tckdev_net
healthcheck:
test: ["CMD-SHELL", "wget -q http://localhost/ -O /dev/null || exit 1"]
interval: 10s
timeout: 5s
retries: 3
start_period: 10s
environment:
- TZ=Asia/Kuala_Lumpur
pgadmin:
image: dpage/pgadmin4
container_name: tckdev-pgAdmin
environment:
- TZ=Asia/Kuala_Lumpur
- PGADMIN_DEFAULT_EMAIL=${PGADMIN_EMAIL}
- PGADMIN_DEFAULT_PASSWORD=${PGADMIN_PASSWORD}
volumes:
- pgadmin_data:/var/lib/pgadmin
- ./backup:/backups
- /etc/localtime:/etc/localtime:ro
ports:
- "5050:80"
depends_on:
postgres:
condition: service_healthy
networks:
- tckdev_net
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "wget -q http://localhost:80/login -O /dev/null || exit 1"]
interval: 30s
timeout: 10s
retries: 3
start_period: 30s
volumes:
pgdata:
pgadmin_data: