Files
newznab-tmux/docker-compose.yml
T
PyRowMan 0cc01331f2 Add Docker setup with Dockerfile, docker-compose, and entrypoint
This commit introduces a Dockerized environment for the application, including a Dockerfile, docker-compose.yml, and a custom entrypoint script. The setup supports multiple services like MariaDB, Redis, and Elasticsearch, with health checks and environment configurations. It also automates dependency installation, environment setup, and Laravel-specific tasks like caching and installation processes.
2024-12-17 22:35:33 +01:00

189 lines
5.3 KiB
YAML

services:
webapp:
build:
context: .
dockerfile: Dockerfile
image: sail-8.3/app
extra_hosts:
- 'host.docker.internal:host-gateway'
ports:
- '${APP_PORT:-80}:80'
environment:
TZ: ${APP_TIMEZONE}
COMPOSER_AUTH: ${COMPOSER_AUTH}
XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
IGNITION_LOCAL_SITES_PATH: '${PWD}'
healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost:80" ]
interval: 10s
timeout: 5s
retries: 5
env_file:
- .env
volumes:
- 'install:/app/_install'
- 'storage:/app/storage'
# - 'resources:/var/www/html/resources'
networks:
- sail
depends_on:
- mariadb
- redis
- mailpit
- elasticsearch
worker:
command: >
sh -c "php artisan tmux-ui:start & php artisan horizon"
image: sail-8.3/app
extra_hosts:
- 'host.docker.internal:host-gateway'
tty: true
environment:
TZ: ${APP_TIMEZONE}
COMPOSER_AUTH: ${COMPOSER_AUTH}
XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
IGNITION_LOCAL_SITES_PATH: '${PWD}'
env_file:
- .env
volumes:
- 'install:/app/_install'
- 'storage:/app/storage'
networks:
- sail
depends_on:
webapp:
condition: service_healthy
scheduler:
image: sail-8.3/app
extra_hosts:
- 'host.docker.internal:host-gateway'
tty: true
env_file:
- .env
environment:
TZ: ${APP_TIMEZONE}
COMPOSER_AUTH: ${COMPOSER_AUTH}
XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
IGNITION_LOCAL_SITES_PATH: '${PWD}'
volumes:
- 'install:/app/_install'
- 'storage:/app/storage'
networks:
- sail
depends_on:
webapp:
condition: service_healthy
command: >
sh -c "while [ true ]; do php artisan schedule:run; sleep 60; done"
mariadb:
image: 'mariadb:11'
ports:
- '${FORWARD_DB_PORT:-3306}:3306'
environment:
TZ: ${APP_TIMEZONE}
MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
MYSQL_ROOT_HOST: '%'
MYSQL_DATABASE: '${DB_DATABASE}'
MYSQL_USER: '${DB_USERNAME}'
MYSQL_PASSWORD: '${DB_PASSWORD}'
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
command:
--max_allowed_packet=128M
--group_concat_max_len=16384
--max_connections=200
volumes:
- 'sail-mariadb:/var/lib/mysql'
- './vendor/laravel/sail/database/mariadb/create-testing-database.sh:/docker-entrypoint-initdb.d/10-create-testing-database.sh'
networks:
- sail
healthcheck:
test:
- CMD
- mysqladmin
- ping
- '-p${DB_PASSWORD}'
retries: 3
timeout: 5s
redis:
image: 'redis:alpine'
ports:
- '${FORWARD_REDIS_PORT:-6379}:6379'
environment:
TZ: ${APP_TIMEZONE}
volumes:
- 'sail-redis:/data'
networks:
- sail
healthcheck:
test:
- CMD
- redis-cli
- ping
retries: 3
timeout: 5s
mailpit:
image: 'axllent/mailpit:latest'
ports:
- '${FORWARD_MAILPIT_PORT:-1025}:1025'
- '${FORWARD_MAILPIT_DASHBOARD_PORT:-8025}:8025'
networks:
- sail
# manticore:
# image: manticoresearch/manticore
# environment:
# TZ: ${APP_TIMEZONE}
# EXTRA: 1 # Activates extra features
# restart: always
# ports:
# - 9306:9306
# - 9308:9308
# ulimits:
# nproc: 65535
# nofile:
# soft: 65535
# hard: 65535
# memlock:
# soft: -1
# hard: -1
# volumes:
# - 'sail-manticore:/var/lib/manticore'
# - ./misc/manticoresearch/manticore.conf:/etc/manticoresearch/manticore.conf # uncomment if you use a custom config
# networks:
# - sail
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.17.0
environment:
- TZ=${APP_TIMEZONE}
- discovery.type=single-node
- xpack.security.enabled=false
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ports:
- 9200:9200
- 9300:9300
volumes:
- sail-elasticsearch:/usr/share/elasticsearch/data
networks:
- sail
deploy:
resources:
limits:
memory: 1g
networks:
sail:
driver: bridge
volumes:
sail-mariadb:
driver: local
sail-redis:
driver: local
sail-manticore:
driver: local
sail-elasticsearch:
driver: local
storage:
resources:
install: