Files
composes/tastyigniter/docker-compose.yml
T
2025-03-25 22:04:48 +07:00

134 lines
3.4 KiB
YAML

version: '3'
services:
app:
build:
context: .
dockerfile: Dockerfile
container_name: tastyigniter-app
restart: unless-stopped
environment:
- APP_NAME=${APP_NAME:-TastyIgniter}
- APP_ENV=${APP_ENV:-production}
- APP_KEY=${APP_KEY}
- APP_DEBUG=${APP_DEBUG:-false}
- APP_URL=${APP_URL}
- IGNITER_LOCATION_MODE=${IGNITER_LOCATION_MODE:-multiple}
- IGNITER_CARTE_KEY=${IGNITER_CARTE_KEY}
# Database configuration
- DB_CONNECTION=mysql
- DB_HOST=db
- DB_PORT=3306
- DB_DATABASE=${DB_DATABASE:-tastyigniter}
- DB_USERNAME=${DB_USERNAME:-tastyigniter}
- DB_PASSWORD=${DB_PASSWORD}
- DB_PREFIX=${DB_PREFIX:-ti_}
# Cache and Session
- BROADCAST_DRIVER=log
- CACHE_DRIVER=file
- QUEUE_CONNECTION=database
- SESSION_DRIVER=file
- SESSION_LIFETIME=120
# Mail Configuration
- MAIL_MAILER=${MAIL_MAILER:-log}
- MAIL_FROM_ADDRESS=${MAIL_FROM_ADDRESS:-noreply@tastyigniter.tld}
- MAIL_FROM_NAME=${MAIL_FROM_NAME:-TastyIgniter}
volumes:
- tastyigniter:/var/www/html
- tastyigniter-storage:/var/www/html/storage
depends_on:
db:
condition: service_healthy
networks:
- tastyigniter-network
healthcheck:
test: ["CMD", "php", "artisan", "--version"]
interval: 30s
timeout: 10s
retries: 3
nginx:
image: nginx:alpine
container_name: tastyigniter-nginx
restart: unless-stopped
ports:
- "${PORT:-80}:80"
volumes:
- tastyigniter:/var/www/html
- ./docker/nginx:/etc/nginx/conf.d
depends_on:
app:
condition: service_healthy
networks:
- tastyigniter-network
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:80"]
interval: 30s
timeout: 10s
retries: 3
db:
image: mysql:8
container_name: tastyigniter-db
restart: unless-stopped
environment:
- MYSQL_DATABASE=${DB_DATABASE:-tastyigniter}
- MYSQL_USER=${DB_USERNAME:-tastyigniter}
- MYSQL_PASSWORD=${DB_PASSWORD}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
volumes:
- dbdata:/var/lib/mysql
networks:
- tastyigniter-network
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${MYSQL_ROOT_PASSWORD}"]
interval: 30s
timeout: 10s
retries: 3
cron:
build:
context: .
dockerfile: Dockerfile
container_name: tastyigniter-cron
restart: unless-stopped
command: bash -c "while true; do php /var/www/html/artisan schedule:run --verbose --no-interaction; sleep 60; done"
volumes:
- tastyigniter:/var/www/html
depends_on:
app:
condition: service_healthy
networks:
- tastyigniter-network
queue:
build:
context: .
dockerfile: Dockerfile
container_name: tastyigniter-queue
restart: unless-stopped
command: php /var/www/html/artisan queue:work
volumes:
- tastyigniter:/var/www/html
depends_on:
app:
condition: service_healthy
networks:
- tastyigniter-network
volumes:
dbdata:
name: ${STACK_NAME:-tastyigniter}_dbdata
tastyigniter:
name: ${STACK_NAME:-tastyigniter}_app
tastyigniter-storage:
name: ${STACK_NAME:-tastyigniter}_storage
networks:
tastyigniter-network:
name: ${STACK_NAME:-tastyigniter}_network
driver: bridge