From 33112f614273ece37a5648ea27ba51f3ee03ec44 Mon Sep 17 00:00:00 2001 From: Robert Rapp Date: Wed, 14 Jan 2026 19:55:36 +0100 Subject: [PATCH] Add dev backend compose and nginx config --- dev-fpm.docker-compose.yml | 114 +++++++++++++++++++++++++++++++++++++ nginx/dev-backend.conf | 27 +++++++++ 2 files changed, 141 insertions(+) create mode 100644 dev-fpm.docker-compose.yml create mode 100644 nginx/dev-backend.conf diff --git a/dev-fpm.docker-compose.yml b/dev-fpm.docker-compose.yml new file mode 100644 index 0000000..409a251 --- /dev/null +++ b/dev-fpm.docker-compose.yml @@ -0,0 +1,114 @@ +version: "3.8" + +services: + mariadb_webapp_dev: + image: docker.io/bitnami/mariadb:11.1 + container_name: ${DEV_COMPOSE_PREFIX:-dev}-mariadb + hostname: ${DEV_DB_HOST:-mariadb-webapp-dev} + environment: + MARIADB_USER: ${MARIADB_USER} + MARIADB_DATABASE: ${MARIADB_DATABASE} + MARIADB_PASSWORD: ${MARIADB_PASSWORD} + MARIADB_ROOT_PASSWORD: ${MARIADB_ROOT_PASSWORD} + networks: + - dev_backend + volumes: + - mindboost_mariadb_data_dev:/var/lib/mysql + + laravel-redis-dev: + image: redis:alpine + container_name: ${DEV_COMPOSE_PREFIX:-dev}-redis + hostname: ${DEV_REDIS_HOST:-laravel-redis-dev} + command: redis-server --appendonly yes --requirepass ${REDIS_PASSWORD} + networks: + - dev_backend + restart: unless-stopped + volumes: + - ./data/redis-dev:/data + + laravel_backend_dev: + image: ${BACKEND_IMAGE} + container_name: ${DEV_COMPOSE_PREFIX:-dev}-backend + environment: + APP_ENV: ${APP_ENV:-production} + APP_NAME: ${APP_NAME:-Mindboost Backend Dev} + APP_URL: https://${DEV_BACKEND_DOMAIN} + FRONTEND_URL: https://${DEV_FRONTEND_DOMAIN} + DB_CONNECTION: mysql + DB_HOST: ${DEV_DB_HOST:-mariadb-webapp-dev} + DB_PORT: ${DB_PORT:-3306} + DB_DATABASE: ${MARIADB_DATABASE} + DB_USERNAME: ${MARIADB_USER} + DB_PASSWORD: ${MARIADB_PASSWORD} + REDIS_HOST: ${DEV_REDIS_HOST:-laravel-redis-dev} + REDIS_PASSWORD: ${REDIS_PASSWORD} + REDIS_PORT: ${REDIS_PORT:-6379} + CACHE_DRIVER: redis + QUEUE_CONNECTION: redis + SESSION_DRIVER: redis + volumes: + - ${BACKEND_CODE_PATH:-./apps/backend/src}:/app + - ${BACKEND_PUBLIC_PATH:-./apps/backend/src/public}:/var/www/public + - ${BACKEND_ENV_FILE:-./env/development/.env.backend}:/var/www/.env + - ./logs/backend-dev:/var/www/storage/logs + depends_on: + - mariadb_webapp_dev + - laravel-redis-dev + networks: + - dev_backend + + laravel-nginx-dev: + image: nginx:alpine + container_name: ${DEV_COMPOSE_PREFIX:-dev}-nginx + volumes: + - ./nginx:/etc/nginx/conf.d:ro + - ${BACKEND_PUBLIC_PATH:-./apps/backend/src/public}:/var/www/public:ro + depends_on: + - laravel_backend_dev + labels: + - "traefik.enable=true" + - "traefik.http.routers.dev_backend_http.entrypoints=web" + - "traefik.http.routers.dev_backend_http.rule=Host(`${DEV_BACKEND_DOMAIN}`)" + - "traefik.http.routers.dev_backend_http.middlewares=traefik-https-redirect" + - "traefik.http.routers.dev_backend_https.entrypoints=websecure" + - "traefik.http.routers.dev_backend_https.rule=Host(`${DEV_BACKEND_DOMAIN}`)" + - "traefik.http.routers.dev_backend_https.tls=true" + - "traefik.http.routers.dev_backend_https.tls.certresolver=${TRAEFIK_CERT_RESOLVER}" + - "traefik.http.routers.dev_backend_https.service=dev_backend_service" + - "traefik.http.services.dev_backend_service.loadbalancer.server.port=80" + - "traefik.docker.network=${TRAEFIK_NETWORK}" + networks: + - dev_backend + - proxy + + nuxt_frontend_dev: + image: ${NUXT_IMAGE} + container_name: ${DEV_COMPOSE_PREFIX:-dev}-frontend + environment: + VUE_APP_BACKEND_HOST_ADDRESS: https://${DEV_BACKEND_DOMAIN} + NUXT_PUBLIC_BACKEND_URL: https://${DEV_BACKEND_DOMAIN} + networks: + - dev_backend + - proxy + depends_on: + - laravel_backend_dev + labels: + - "traefik.enable=true" + - "traefik.http.routers.dev_frontend_http.entrypoints=web" + - "traefik.http.routers.dev_frontend_http.rule=Host(`${DEV_FRONTEND_DOMAIN}`)" + - "traefik.http.routers.dev_frontend_http.middlewares=traefik-https-redirect" + - "traefik.http.routers.dev_frontend_https.entrypoints=websecure" + - "traefik.http.routers.dev_frontend_https.rule=Host(`${DEV_FRONTEND_DOMAIN}`)" + - "traefik.http.routers.dev_frontend_https.tls=true" + - "traefik.http.routers.dev_frontend_https.tls.certresolver=${TRAEFIK_CERT_RESOLVER}" + - "traefik.http.services.dev_frontend_https.loadbalancer.server.port=${VUE_INTERNAL_PORT}" + - "traefik.docker.network=${TRAEFIK_NETWORK}" + +networks: + dev_backend: + driver: bridge + proxy: + external: true + +volumes: + mindboost_mariadb_data_dev: diff --git a/nginx/dev-backend.conf b/nginx/dev-backend.conf new file mode 100644 index 0000000..143dc92 --- /dev/null +++ b/nginx/dev-backend.conf @@ -0,0 +1,27 @@ +server { + listen 80; + server_name _; + + root /var/www/public; + index index.php index.html; + + add_header X-Content-Type-Options nosniff; + add_header X-Frame-Options SAMEORIGIN; + add_header X-XSS-Protection "1; mode=block"; + + location / { + try_files $uri $uri/ /index.php?$query_string; + } + + location ~ \.php$ { + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; + fastcgi_param PATH_INFO $fastcgi_path_info; + fastcgi_pass laravel_backend_dev:9000; + fastcgi_index index.php; + } + + location ~ /\.(?!well-known).* { + deny all; + } +}