Files
ntspi-app/docker-compose.yml
T
F4ilji 2d101dcdda feat: Refactor MainController and related tasks to follow Porto architecture
- Moved logic from MainController to dedicated action and task classes.
- Introduced GetMainPageDataAction, GetEducationsDataTask, GetRecentPostsTask, GetUpcomingEventsTask, and GetPageDataTask for better separation of concerns.
- Updated routes to use the new MainController from the Main container.
- Deprecated the old MainController with a clear message for future removal.
- Updated caching mechanisms to use the new task classes.
- Adjusted environment variable access to use config() instead of env() for better practice.
- Added new MainPageResource for structured data response.
- Updated .gitignore to exclude QWEN.md.
- Added Jenkins service to docker-compose for CI/CD integration.
2025-12-16 12:20:01 +05:00

130 lines
2.9 KiB
YAML

services:
webserver:
image: nginx:1.27.2
volumes:
- ./:/var/www
- ./_docker/nginx/${NGINX_ENV}/conf.d/:/etc/nginx/conf.d/
- /etc/letsencrypt:/etc/letsencrypt
- /var/www/certbot:/var/www/certbot
ports:
- "80:80"
- "443:443"
container_name: ntspi-nginx
restart: always
depends_on:
- app
env_file:
- .env
networks:
- app-network
certbot:
image: certbot/certbot
container_name: ntspi-certbot
volumes:
- /etc/letsencrypt:/etc/letsencrypt
- /var/www/certbot:/var/www/certbot
entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"
depends_on:
- webserver
networks:
- app-network
app:
build:
context: .
dockerfile: _docker/app/Dockerfile
volumes:
- ./:/var/www
container_name: ntspi-php
restart: always
ports:
- "5173"
depends_on:
db:
condition: service_healthy
networks:
- app-network
dns:
- 8.8.8.8 # Google DNS
- 1.1.1.1 # Cloudflare DNS
php-queue-worker:
restart: always
build:
context: .
dockerfile: _docker/app/Dockerfile
volumes:
- ./:/var/www
container_name: ntspi-php-queue
command: php artisan queue:work --tries=3 --timeout=90 --sleep=3
depends_on:
db:
condition: service_healthy
networks:
- app-network
dns:
- 8.8.8.8 # Google DNS
- 1.1.1.1 # Cloudflare DNS
db:
image: mysql:8.0
restart: always
container_name: ntspi-db
volumes:
- "./sourcefiles/mysql:/var/lib/mysql"
environment:
- MYSQL_ROOT_PASSWORD=secret
- MYSQL_DATABASE=ntspi_db
- MYSQL_USER=admin
- MYSQL_PASSWORD=secret
ports:
- "3306:3306"
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 5s
timeout: 10s
retries: 10
networks:
- app-network
redis-cache:
image: redis:7.4.2
restart: always
container_name: ntspi-cache-service
ports:
- "6379:6379"
command: redis-server --save 20 1 --loglevel warning
volumes:
- cache:/data
networks:
- app-network
jenkins:
build:
context: .
dockerfile: _docker/jenkins/Dockerfile
container_name: ntspi-jenkins
restart: always
ports:
- "8080:8080" # Порт для доступа к UI Jenkins
- "50000:50000" # Порт для агентов
volumes:
- jenkins_home:/var/jenkins_home # Сохранение данных Jenkins
- /var/run/docker.sock:/var/run/docker.sock # Доступ к Docker хоста
- ./:/var/www # Доступ к файлам проекта
networks:
- app-network
group_add:
- 999
volumes:
cache:
driver: local
jenkins_home:
driver: local
networks:
app-network:
driver: bridge