services: webapp: build: context: . dockerfile: Dockerfile image: pyrowman/nntmux extra_hosts: - 'host.docker.internal:host-gateway' ports: - '${APP_PORT:-80}:80' environment: TZ: ${APP_TIMEZONE} healthcheck: test: [ "CMD", "curl", "-f", "http://localhost:${APP_PORT:-80}" ] interval: 10s timeout: 5s retries: 5 env_file: - .env volumes: - 'install:/app/_install' - 'storage:/app/storage' # - 'resources:/var/www/html/resources' networks: - nntmux depends_on: - mariadb - redis - mailpit - elasticsearch - manticore worker: command: > sh -c "php artisan tmux-ui:start & php artisan horizon" image: pyrowman/nntmux extra_hosts: - 'host.docker.internal:host-gateway' tty: true environment: TZ: ${APP_TIMEZONE} env_file: - .env volumes: - 'install:/app/_install' - 'storage:/app/storage' networks: - nntmux depends_on: webapp: condition: service_healthy scheduler: image: pyrowman/nntmux extra_hosts: - 'host.docker.internal:host-gateway' tty: true env_file: - .env environment: TZ: ${APP_TIMEZONE} volumes: - 'install:/app/_install' - 'storage:/app/storage' networks: - nntmux 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: - 'mariadb:/var/lib/mysql' - './vendor/laravel/sail/database/mariadb/create-testing-database.sh:/docker-entrypoint-initdb.d/10-create-testing-database.sh' networks: - nntmux 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: - 'redis:/data' networks: - nntmux healthcheck: test: - CMD - redis-cli - ping retries: 3 timeout: 5s 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: - 'manticore:/var/lib/manticore' - ./config/manticore.conf:/etc/manticoresearch/manticore.conf networks: - nntmux mailpit: image: 'axllent/mailpit:latest' ports: - '${FORWARD_MAILPIT_PORT:-1025}:1025' - '${FORWARD_MAILPIT_DASHBOARD_PORT:-8025}:8025' networks: - nntmux 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: - elasticsearch:/usr/share/elasticsearch/data networks: - nntmux deploy: resources: limits: memory: 1g networks: nntmux: driver: bridge volumes: mariadb: redis: elasticsearch: manticore: storage: resources: install: