Add dev backend compose and nginx config

This commit is contained in:
2026-01-14 19:55:36 +01:00
parent fc00c3f627
commit 33112f6142
2 changed files with 141 additions and 0 deletions

114
dev-fpm.docker-compose.yml Normal file
View File

@@ -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:

27
nginx/dev-backend.conf Normal file
View File

@@ -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;
}
}