diff --git a/apps/database/docker-compose.yml b/apps/backend/database/docker-compose.yml similarity index 51% rename from apps/database/docker-compose.yml rename to apps/backend/database/docker-compose.yml index d85a294..24bd1cb 100644 --- a/apps/database/docker-compose.yml +++ b/apps/backend/database/docker-compose.yml @@ -3,7 +3,7 @@ # - [ ] Configure volumes for persistent storage of database data secrets: mariadb_root: - file: ${ROOT_DIR:-../..}/env/secrets.env + file: ${ROOT_DIR:-../../..}/env/secrets.env services: database: secrets: @@ -13,7 +13,7 @@ services: container_name: ${INFRASTRUCTURE_LABEL:-default}-mariadb-${ENVIRONMENT:-development} command: --bind-address=0.0.0.0 env_file: - - ../../env/${ENVIRONMENT:-development}/.env.database + - ${ROOT_DIR:-../../..}/env/${ENVIRONMENT:-development}/.env.database volumes: - backend_mariadb_data:/var/lib/mysql - ./healthcheck.sh:/usr/local/bin/healthcheck.sh @@ -24,25 +24,6 @@ services: test: ["CMD", "bash", "/usr/local/bin/healthcheck.sh"] interval: 1s retries: 3 - adminer: - profiles: ["all", "database", "backend", "adminer", "app"] - image: adminer - container_name: ${INFRASTRUCTURE_LABEL:-default}-adminer-${ENVIRONMENT:-development} - restart: always - ports: - - ${ADMINER_PORT:-0}:8080 - networks: - - database - - proxy - labels: - - "traefik.enable=true" - - "traefik.http.routers.${INFRASTRUCTURE_LABEL:-default}_adminer.entrypoints=websecure" - - "traefik.http.routers.${INFRASTRUCTURE_LABEL:-default}_adminer.rule=Host(`${ADMINER_DOMAIN}`)" - - "traefik.http.routers.${INFRASTRUCTURE_LABEL:-default}_adminer.tls=true" - - "traefik.http.routers.${INFRASTRUCTURE_LABEL:-default}_adminer.tls.certresolver=http_resolver" - - 'traefik.http.routers.${INFRASTRUCTURE_LABEL:-default}_adminer.service=adminer' - - "traefik.http.adminer.cloud.loadbalancer.server.port=8080" - - "traefik.docker.network=${TRAEFIK_NETWORK:-default}" # TODO: ADMINER IS NOT PREPARED FOR TRAEFIK networks: backend: diff --git a/apps/database/healthcheck.sh b/apps/backend/database/healthcheck.sh similarity index 100% rename from apps/database/healthcheck.sh rename to apps/backend/database/healthcheck.sh diff --git a/apps/database/init-user.sh b/apps/backend/database/init-user.sh similarity index 100% rename from apps/database/init-user.sh rename to apps/backend/database/init-user.sh diff --git a/apps/backend/docker-compose.overwrite.yml b/apps/backend/docker-compose.overwrite.yml new file mode 100644 index 0000000..14203b2 --- /dev/null +++ b/apps/backend/docker-compose.overwrite.yml @@ -0,0 +1,48 @@ +### Backend (./apps/backend/docker-compose.yml) +include: + - ./database/docker-compose.yml +services: + backend: + container_name: ${INFRASTRUCTURE_LABEL:-default}-backend-laravel-${ENVIRONMENT:-development} + profiles: ["laravel", "backend", "all", "app"] + ports: + - "${LARAVEL_PORT:-8000}:8000" + - "${LARAVEL_VITE_PORT:-5173}:5173" + env_file: + - ../../env/${ENVIRONMENT:-development}/.env.backend + volumes: + - ./src/entrypoint.sh:/usr/local/bin/entrypoint.sh + depends_on: + - database + build: + context: ./src + dockerfile: Dockerfile + networks: + - backend + labels: + - "traefik.enable=${TRAEFIK_ENABLE:-false}" + - "traefik.http.routers.backend.entrypoints=${TRAEFIK_ENTRYPOINT}" + - "traefik.http.routers.backend.rule=Host(`${BACKEND_DOMAIN}`)" + - "traefik.http.routers.backend.tls=true" + - "traefik.http.routers.backend.tls.certresolver=${TRAEFIK_CERT_RESOLVER}" + - "traefik.http.routers.backend.tls.domains[0].main=`${BACKEND_DOMAIN}`" + - "traefik.http.services.backend.loadbalancer.server.port=${BACKEND_PORT:-8000}" + - "traefik.docker.network=${TRAEFIK_NETWORK}" + backend-redis: + image: redis:alpine + container_name: ${INFRASTRUCTURE_LABEL:-default}-backend-redis-${ENVIRONMENT:-development} + profiles: ["redis", "backend", "all"] + env_file: + - ../../env/${ENVIRONMENT:-development}/.env.backend + restart: unless-stopped + command: redis-server --appendonly yes --requirepass ${REDIS_PASSWORD:-laravel-redis-passwort} # Redis Passwort eingeben + volumes: + - backend_redis_data:/data + networks: + - backend +volumes: + backend_redis_data: + driver: local + name: "${INFRASTRUCTURE_LABEL}_backend_redis_data" + + diff --git a/apps/backend/docker-compose.yml b/apps/backend/docker-compose.yml index 5f53f80..ed4df67 100644 --- a/apps/backend/docker-compose.yml +++ b/apps/backend/docker-compose.yml @@ -1,10 +1,14 @@ ### Backend (./apps/backend/docker-compose.yml) +include: + - ./database/docker-compose.yml services: backend: container_name: ${INFRASTRUCTURE_LABEL:-default}-backend-laravel-${ENVIRONMENT:-development} profiles: ["laravel", "backend", "all", "app"] env_file: - ../../env/${ENVIRONMENT:-development}/.env.backend + volumes: + - ./src/entrypoint.sh:/usr/local/bin/entrypoint.sh depends_on: - database build: @@ -13,7 +17,7 @@ services: networks: - backend labels: - - "traefik.enable=${TRAEFIK_ENABLE}" + - "traefik.enable=${TRAEFIK_ENABLE:-false}" - "traefik.http.routers.backend.entrypoints=${TRAEFIK_ENTRYPOINT}" - "traefik.http.routers.backend.rule=Host(`${BACKEND_DOMAIN}`)" - "traefik.http.routers.backend.tls=true" diff --git a/apps/backend/src b/apps/backend/src index 0e3ecbb..623a270 160000 --- a/apps/backend/src +++ b/apps/backend/src @@ -1 +1 @@ -Subproject commit 0e3ecbb0a788f2afa5699185ef65901781d11c79 +Subproject commit 623a2709481206350acc350a3abc245efe0cad23 diff --git a/apps/frontend/docker-compose.overwrite.yml b/apps/frontend/docker-compose.overwrite.yml new file mode 100644 index 0000000..8d4b073 --- /dev/null +++ b/apps/frontend/docker-compose.overwrite.yml @@ -0,0 +1,19 @@ +services: + webapp: + build: + context: ./src + dockerfile: Dockerfile + args: + BACKEND_URL: ${BACKEND_URL:-http://localhost:8000} # this argument is important on build to set the server url! + container_name: ${INFRASTRUCTURE_LABEL:-default}-frontend-${ENVIRONMENT:-development} + profiles: ["webapp", "frontend", "all", "app"] + ports: + - 3000:3000 + labels: + - "traefik.enable=${TRAEFIK_ENABLE:-false}" + - "traefik.http.routers.webapp.service=webapp" + - "traefik.http.routers.webapp.entrypoints=${TRAEFIK_ENTRYPOINT}" + - 'traefik.http.routers.webapp.rule=Host(`${FRONTEND_DOMAIN}`) || Host(`${FRONTEND_DOMAIN_2}`)' + - "traefik.http.services.webapp.loadbalancer.server.port=3000" + - "traefik.docker.network=${TRAEFIK_NETWORK}" + \ No newline at end of file diff --git a/apps/frontend/docker-compose.yml b/apps/frontend/docker-compose.yml index 9247f01..76dbe6a 100644 --- a/apps/frontend/docker-compose.yml +++ b/apps/frontend/docker-compose.yml @@ -3,12 +3,12 @@ services: build: context: ./src dockerfile: Dockerfile + args: + BACKEND_URL: ${BACKEND_URL:-http://localhost:8000} # this argument is important on build to set the backend server url! container_name: ${INFRASTRUCTURE_LABEL:-default}-frontend-${ENVIRONMENT:-development} profiles: ["webapp", "frontend", "all", "app"] - ports: - - 3000:3000 labels: - - "traefik.enable=${TRAEFIK_ENABLE}" + - "traefik.enable=${TRAEFIK_ENABLE:-false}" - "traefik.http.routers.webapp.service=webapp" - "traefik.http.routers.webapp.entrypoints=${TRAEFIK_ENTRYPOINT}" - 'traefik.http.routers.webapp.rule=Host(`${FRONTEND_DOMAIN}`) || Host(`${FRONTEND_DOMAIN_2}`)' diff --git a/apps/frontend/src b/apps/frontend/src index bea91fe..b5ed737 160000 --- a/apps/frontend/src +++ b/apps/frontend/src @@ -1 +1 @@ -Subproject commit bea91fef76057fea0d7f0b68931df22fea44e5e6 +Subproject commit b5ed737d10ad899d46b7c53533654280b59ef35e