From 95cfa230effe7627d94388f5ce4af95f98436bd1 Mon Sep 17 00:00:00 2001 From: DongHoon Lee Date: Fri, 27 Dec 2024 15:44:52 +0900 Subject: [PATCH] =?UTF-8?q?del:=20=EB=B0=B0=ED=8F=AC=20=EA=B4=80=EB=A0=A8?= =?UTF-8?q?=20=EC=8A=A4=ED=81=AC=EB=A6=BD=ED=8A=B8=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy-dev.sh | 123 --------------- deploy-prod.sh | 123 --------------- docker-compose.dev.yml | 30 ---- docker-compose.local.yml | 30 ---- docker-compose.prod.yml | 29 ---- docker-compose.yml | 319 --------------------------------------- 6 files changed, 654 deletions(-) delete mode 100644 deploy-dev.sh delete mode 100644 deploy-prod.sh delete mode 100644 docker-compose.dev.yml delete mode 100644 docker-compose.local.yml delete mode 100644 docker-compose.prod.yml delete mode 100644 docker-compose.yml diff --git a/deploy-dev.sh b/deploy-dev.sh deleted file mode 100644 index 6f5738ec..00000000 --- a/deploy-dev.sh +++ /dev/null @@ -1,123 +0,0 @@ -#!/bin/bash -export $(grep -v '^#' docker/.env | sed 's/ *= */=/g' | xargs) - -IS_GREEN_EXIST=$(sudo docker ps | grep green) -DIR=~/docker - -SPRING_GREEN_PORT=4001 -SPRING_BLUE_PORT=4002 -NESTJS_GREEN_PORT=3001 -NESTJS_BLUE_PORT=3002 -DOCKERHUB_PASSWORD=$DOCKERHUB_PASSWORD - -SPRING_GREEN_NAME="spring-green" -SPRING_BLUE_NAME="spring-blue" -NESTJS_GREEN_NAME="nestjs-green" -NESTJS_BLUE_NAME="nestjs-blue" - - -# green up -if [ -z $IS_GREEN_EXIST ];then - echo "### BLUE -> GREEN ####" - echo ">>> pull green image" - - sudo docker login -u makerscrew -p DOCKERHUB_PASSWORD - - (cd $DIR && sudo docker compose pull caddy) - (cd $DIR && sudo docker compose pull swagger) - (cd $DIR && sudo docker compose pull nestjs-green) - (cd $DIR && sudo docker compose pull spring-green) - - (cd $DIR && sed -i "s/^SPRING_NAME=.*/SPRING_NAME=${SPRING_GREEN_NAME}/" .env) - (cd $DIR && sed -i "s/^NESTJS_NAME=.*/NESTJS_NAME=${NESTJS_GREEN_NAME}/" .env) - - (cd $DIR && sudo docker network create caddy) - - sleep 5 - - echo ">>> up green container" - (cd $DIR && sudo docker compose --env-file .env -f docker-compose.yml -f docker-compose.dev.yml up caddy nestjs-green spring-green swagger -d --build) - - while [ 1 = 1 ]; do - echo ">>> nestjs green health check ..." - sleep 3 - STATUS_CODE_NESTJS=$(curl -o /dev/null -s -w "%{http_code}" localhost:3001/) - if [ "$STATUS_CODE_NESTJS" -eq 200 ]; then - echo ">>> nestjs health check success !" - break; - fi - done; - - - while [ 1 = 1 ]; do - echo ">>> spring green health check ..." - sleep 3 - STATUS_CODE_SPRING=$(curl -o /dev/null -s -w "%{http_code}" localhost:4001/health/v2) - if [ "$STATUS_CODE_SPRING" -eq 200 ]; then - echo ">>> spring health check success !" - break; - fi - done; - - sleep 3 - echo ">>> down blue container" - (cd $DIR && sudo docker compose stop spring-blue) - (cd $DIR && sudo docker compose stop nestjs-blue) - - (cd $DIR && sudo docker compose rm -f spring-blue) - (cd $DIR && sudo docker compose rm -f nestjs-blue) - -# blue up -else - echo "### GREEN -> BLUE ###" - echo ">>> pull blue image" - - sudo docker login -u makerscrew -p DOCKERHUB_PASSWORD - - (cd $DIR && sudo docker compose pull caddy) - (cd $DIR && sudo docker compose pull swagger) - (cd $DIR && sudo docker compose pull nestjs-blue) - (cd $DIR && sudo docker compose pull spring-blue) - - (cd $DIR && sed -i "s/^SPRING_NAME=.*/SPRING_NAME=${SPRING_BLUE_NAME}/" .env) - (cd $DIR && sed -i "s/^NESTJS_NAME=.*/NESTJS_NAME=${NESTJS_BLUE_NAME}/" .env) - - (cd $DIR && sudo docker network create caddy) - - sleep 5 - - echo ">>> up blue container" - (cd $DIR && sudo docker compose --env-file .env -f docker-compose.yml -f docker-compose.dev.yml up caddy nestjs-blue spring-blue swagger -d --build) - - - while [ 1 = 1 ]; do - echo ">>> nestjs blue health check ..." - sleep 3 - STATUS_CODE_NESTJS=$(curl -o /dev/null -s -w "%{http_code}" localhost:3002/) - if [ "$STATUS_CODE_NESTJS" -eq 200 ]; then - echo ">>> nestjs health check success !" - break; - fi - done; - - - while [ 1 = 1 ]; do - echo ">>> spring blue health check ..." - sleep 3 - STATUS_CODE_SPRING=$(curl -o /dev/null -s -w "%{http_code}" localhost:4002/health/v2) - if [ "$STATUS_CODE_SPRING" -eq 200 ]; then - echo ">>> spring health check success !" - break; - fi - done; - - sleep 3 - echo ">>> down green container" - (cd $DIR && sudo docker compose stop spring-green) - (cd $DIR && sudo docker compose stop nestjs-green) - - (cd $DIR && sudo docker compose rm -f spring-green) - (cd $DIR && sudo docker compose rm -f spring-green) -fi - -sudo docker image prune -f \ No newline at end of file diff --git a/deploy-prod.sh b/deploy-prod.sh deleted file mode 100644 index 0bc84e4f..00000000 --- a/deploy-prod.sh +++ /dev/null @@ -1,123 +0,0 @@ -#!/bin/bash -export $(grep -v '^#' docker/.env | sed 's/ *= */=/g' | xargs) - -IS_GREEN_EXIST=$(sudo docker ps | grep green) -DIR=~/docker - -SPRING_GREEN_PORT=4001 -SPRING_BLUE_PORT=4002 -NESTJS_GREEN_PORT=3001 -NESTJS_BLUE_PORT=3002 -DOCKERHUB_PASSWORD=$DOCKERHUB_PASSWORD - -SPRING_GREEN_NAME="spring-green" -SPRING_BLUE_NAME="spring-blue" -NESTJS_GREEN_NAME="nestjs-green" -NESTJS_BLUE_NAME="nestjs-blue" - - -# green up -if [ -z $IS_GREEN_EXIST ];then - echo "### BLUE -> GREEN ####" - echo ">>> pull green image" - - sudo docker login -u makerscrew -p DOCKERHUB_PASSWORD - - (cd $DIR && sudo docker compose pull caddy) - (cd $DIR && sudo docker compose pull swagger) - (cd $DIR && sudo docker compose pull nestjs-green) - (cd $DIR && sudo docker compose pull spring-green) - - (cd $DIR && sed -i "s/^SPRING_NAME=.*/SPRING_NAME=${SPRING_GREEN_NAME}/" .env) - (cd $DIR && sed -i "s/^NESTJS_NAME=.*/NESTJS_NAME=${NESTJS_GREEN_NAME}/" .env) - - (cd $DIR && sudo docker network create caddy) - - sleep 5 - - echo ">>> up green container" - (cd $DIR && sudo docker compose --env-file .env -f docker-compose.yml -f docker-compose.prod.yml up caddy nestjs-green spring-green swagger -d --build) - - while [ 1 = 1 ]; do - echo ">>> nestjs green health check ..." - sleep 3 - STATUS_CODE_NESTJS=$(curl -o /dev/null -s -w "%{http_code}" localhost:3001/) - if [ "$STATUS_CODE_NESTJS" -eq 200 ]; then - echo ">>> nestjs health check success !" - break; - fi - done; - - - while [ 1 = 1 ]; do - echo ">>> spring green health check ..." - sleep 3 - STATUS_CODE_SPRING=$(curl -o /dev/null -s -w "%{http_code}" localhost:4001/health/v2) - if [ "$STATUS_CODE_SPRING" -eq 200 ]; then - echo ">>> spring health check success !" - break; - fi - done; - - sleep 3 - echo ">>> down blue container" - (cd $DIR && sudo docker compose stop spring-blue) - (cd $DIR && sudo docker compose stop nestjs-blue) - - (cd $DIR && sudo docker compose rm -f spring-blue) - (cd $DIR && sudo docker compose rm -f nestjs-blue) - -# blue up -else - echo "### GREEN -> BLUE ###" - echo ">>> pull blue image" - - sudo docker login -u makerscrew -p DOCKERHUB_PASSWORD - - (cd $DIR && sudo docker compose pull caddy) - (cd $DIR && sudo docker compose pull swagger) - (cd $DIR && sudo docker compose pull nestjs-blue) - (cd $DIR && sudo docker compose pull spring-blue) - - (cd $DIR && sed -i "s/^SPRING_NAME=.*/SPRING_NAME=${SPRING_BLUE_NAME}/" .env) - (cd $DIR && sed -i "s/^NESTJS_NAME=.*/NESTJS_NAME=${NESTJS_BLUE_NAME}/" .env) - - (cd $DIR && sudo docker network create caddy) - - sleep 5 - - echo ">>> up blue container" - (cd $DIR && sudo docker compose --env-file .env -f docker-compose.yml -f docker-compose.prod.yml up caddy nestjs-blue spring-blue swagger -d --build) - - - while [ 1 = 1 ]; do - echo ">>> nestjs blue health check ..." - sleep 3 - STATUS_CODE_NESTJS=$(curl -o /dev/null -s -w "%{http_code}" localhost:3002/) - if [ "$STATUS_CODE_NESTJS" -eq 200 ]; then - echo ">>> nestjs health check success !" - break; - fi - done; - - - while [ 1 = 1 ]; do - echo ">>> spring blue health check ..." - sleep 3 - STATUS_CODE_SPRING=$(curl -o /dev/null -s -w "%{http_code}" localhost:4002/health/v2) - if [ "$STATUS_CODE_SPRING" -eq 200 ]; then - echo ">>> spring health check success !" - break; - fi - done; - - sleep 3 - echo ">>> down green container" - (cd $DIR && sudo docker compose stop spring-green) - (cd $DIR && sudo docker compose stop nestjs-green) - - (cd $DIR && sudo docker compose rm -f spring-green) - (cd $DIR && sudo docker compose rm -f spring-green) -fi - -sudo docker image prune -f \ No newline at end of file diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml deleted file mode 100644 index 1746571d..00000000 --- a/docker-compose.dev.yml +++ /dev/null @@ -1,30 +0,0 @@ -version: "3.7" - -services: - swagger: - labels: - caddy: localhost crew.api.dev.sopt.org - - nestjs-green: - environment: - - NODE_ENV=dev - labels: - caddy: localhost crew.api.dev.sopt.org - - spring-green: - environment: - - SPRING_PROFILES_ACTIVE=dev - labels: - caddy: localhost crew.api.dev.sopt.org - - nestjs-blue: - environment: - - NODE_ENV=dev - labels: - caddy: localhost crew.api.dev.sopt.org - - spring-blue: - environment: - - SPRING_PROFILES_ACTIVE=dev - labels: - caddy: localhost crew.api.dev.sopt.org diff --git a/docker-compose.local.yml b/docker-compose.local.yml deleted file mode 100644 index 7c6da8d6..00000000 --- a/docker-compose.local.yml +++ /dev/null @@ -1,30 +0,0 @@ -version: "3.7" - -services: - swagger: - labels: - caddy: localhost - - spring-green: - environment: - - SPRING_PROFILES_ACTIVE=dev - labels: - caddy: localhost - - nestjs-green: - environment: - - NODE_ENV=dev - labels: - caddy: localhost - - spring-blue: - environment: - - SPRING_PROFILES_ACTIVE=dev - labels: - caddy: localhost - - nestjs-blue: - environment: - - NODE_ENV=dev - labels: - caddy: localhost \ No newline at end of file diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml deleted file mode 100644 index 29081fba..00000000 --- a/docker-compose.prod.yml +++ /dev/null @@ -1,29 +0,0 @@ -version: "3.7" - -services: - swagger: - labels: - caddy: localhost crew.api.prod.sopt.org - spring-green: - environment: - - SPRING_PROFILES_ACTIVE=prod - labels: - caddy: localhost crew.api.prod.sopt.org - - nestjs-green: - environment: - - NODE_ENV=prod - labels: - caddy: localhost crew.api.prod.sopt.org - - spring-blue: - environment: - - SPRING_PROFILES_ACTIVE=prod - labels: - caddy: localhost crew.api.prod.sopt.org - - nestjs-blue: - environment: - - NODE_ENV=prod - labels: - caddy: localhost crew.api.prod.sopt.org \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 372ca83d..00000000 --- a/docker-compose.yml +++ /dev/null @@ -1,319 +0,0 @@ -version: "3.7" - -services: - caddy: - container_name: caddy - image: lucaslorentz/caddy-docker-proxy:ci-alpine - ports: - - 80:80 - - 443:443 - environment: - - CADDY_INGRESS_NETWORKS=caddy - networks: - - caddy - volumes: - - /var/run/docker.sock:/var/run/docker.sock - restart: unless-stopped - labels: - caddy.log: "" - caddy.log.output: stdout - caddy.log.format: json - caddy.log.include: http.log.access.localhost - logging: - driver: "json-file" - options: - max-size: "10m" - max-file: "10" - - swagger: - image: swaggerapi/swagger-ui - env_file: - - ./.env - container_name: swagger - environment: - - URLS= - [ - {url:'/api-docs/json', name:'spring'}, - {url:'/api-docs-json', name:'nestjs'}, - ] - - BASE_URL=/docs - - SPRING_NAME=${SPRING_NAME} - - NESTJS_NAME=${NESTJS_NAME} - depends_on: - - ${SPRING_NAME} - - ${NESTJS_NAME} - networks: - - caddy - labels: - caddy.route: /docs* - caddy.route.reverse_proxy: "{{ upstreams 8080 }}" - logging: - driver: "json-file" - options: - max-size: "10m" - max-file: "10" - - redis: - image: redis:alpine - container_name: redis - hostname: redis - ports: - - 6379:6379 - networks: - - caddy - - nestjs-green: - image: makerscrew/server:develop - container_name: nestjs-green - ports: - - 3001:3000 - restart: unless-stopped - env_file: - - ./.env - environment: - - TZ=Asia/Seoul - - DB_HOST=${DB_HOST} - - DB_PORT=${DB_PORT} - - DB_USERNAME=${DB_USERNAME} - - DB_PASSWORD=${DB_PASSWORD} - - DB_NAME=${DB_NAME} - - DB_SCHEMA=${DB_SCHEMA} - - AWS_S3_BUCKET_NAME=${AWS_S3_BUCKET_NAME} - - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} - - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} - - AWS_REGION=${AWS_REGION} - - JWT_SECRET=${JWT_SECRET} - logging: - driver: "json-file" - options: - max-size: "10m" - max-file: "10" - networks: - - caddy - labels: - caddy.log: "localhost" - # for Swagger spec - caddy.route_0: /api-docs-json - caddy.route_0.reverse_proxy: "{{ upstreams 3000 }}" - # for health check - caddy.route_1: / - caddy.route_1.reverse_proxy: "{{ upstreams 3000 }}" - caddy.route_2: /auth - caddy.route_2.reverse_proxy: "{{ upstreams 3000 }}" - caddy.route_3: /comment/v1 - caddy.route_3.reverse_proxy: "{{ upstreams 3000 }}" - caddy.route_4: /comment/v1/* - caddy.route_4.reverse_proxy: "{{ upstreams 3000 }}" - caddy.route_5: /meeting/apply - caddy.route_5.reverse_proxy: "{{ upstreams 3000 }}" - caddy.route_6: /meeting - caddy.route_6.reverse_proxy: "{{ upstreams 3000 }}" - caddy.route_7: /meeting/v1/* - caddy.route_7.reverse_proxy: "{{ upstreams 3000 }}" - caddy.route_8: /meeting/* - caddy.route_8.reverse_proxy: "{{ upstreams 3000 }}" - caddy.route_9: /notice/v1 - caddy.route_9.reverse_proxy: "{{ upstreams 3000 }}" - caddy.route_10: /notice/v1/* - caddy.route_10.reverse_proxy: "{{ upstreams 3000 }}" - caddy.route_11: /post/v1 - caddy.route_11.reverse_proxy: "{{ upstreams 3000 }}" - caddy.route_12: /post/v1/* - caddy.route_12.reverse_proxy: "{{ upstreams 3000 }}" - caddy.route_13: /users - caddy.route_13.reverse_proxy: "{{ upstreams 3000 }}" - caddy.route_14: /users/* - caddy.route_14.reverse_proxy: "{{ upstreams 3000 }}" - - spring-green: - image: makerscrew/main:develop - environment: - TZ: Asia/Seoul - container_name: spring-green - ports: - - 4001:4000 - - 5556:5555 - restart: unless-stopped - depends_on: - - nestjs-green - - pinpoint-agent - - redis - logging: - driver: "json-file" - options: - max-size: "10m" - max-file: "100" - networks: - - caddy - volumes: - - data-volume:/pinpoint-agent - - labels: - caddy.log: "localhost" - # for Swagger spec - caddy.route_0: /api-docs/json - caddy.route_0.reverse_proxy: "{{ upstreams 4000 }}" - # for health check - caddy.route_1: /health/* - caddy.route_1.reverse_proxy: "{{ upstreams 4000 }}" - caddy.route_2: /user/v2 - caddy.route_2.reverse_proxy: "{{ upstreams 4000 }}" - caddy.route_3: /user/v2/* - caddy.route_3.reverse_proxy: "{{ upstreams 4000 }}" - caddy.route_4: /meeting/v2 - caddy.route_4.reverse_proxy: "{{ upstreams 4000 }}" - caddy.route_5: /meeting/v2/* - caddy.route_5.reverse_proxy: "{{ upstreams 4000 }}" - caddy.route_6: /post/v2 - caddy.route_6.reverse_proxy: "{{ upstreams 4000 }}" - caddy.route_7: /post/v2/* - caddy.route_7.reverse_proxy: "{{ upstreams 4000 }}" - caddy.route_8: /comment/v2 - caddy.route_8.reverse_proxy: "{{ upstreams 4000 }}" - caddy.route_9: /comment/v2/* - caddy.route_9.reverse_proxy: "{{ upstreams 4000 }}" - caddy.route_10: /notice/v2 - caddy.route_10.reverse_proxy: "{{ upstreams 4000 }}" - caddy.route_11: /advertisement/v2 - caddy.route_11.reverse_proxy: "{{ upstreams 4000 }}" - caddy.route_12: /advertisement/v2/* - caddy.route_12.reverse_proxy: "{{ upstreams 4000 }}" - caddy.route_13: /auth/v2 - caddy.route_13.reverse_proxy: "{{ upstreams 4000 }}" - caddy.route_14: /auth/v2/* - caddy.route_14.reverse_proxy: "{{ upstreams 4000 }}" - caddy.route_15: /8da2d7e6-72aa-4120-9e84-8f459a2584a1/* - caddy.route_15.reverse_proxy: "{{ upstreams 5555 }}" - caddy.route_16: /internal/* - caddy.route_16.reverse_proxy: "{{ upstreams 4000 }}" - - nestjs-blue: - image: makerscrew/server:develop - container_name: nestjs-blue - ports: - - 3002:3000 - restart: unless-stopped - env_file: - - ./.env - environment: - - TZ=Asia/Seoul - - DB_HOST=${DB_HOST} - - DB_PORT=${DB_PORT} - - DB_USERNAME=${DB_USERNAME} - - DB_PASSWORD=${DB_PASSWORD} - - DB_NAME=${DB_NAME} - - DB_SCHEMA=${DB_SCHEMA} - - AWS_S3_BUCKET_NAME=${AWS_S3_BUCKET_NAME} - - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} - - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} - - AWS_REGION=${AWS_REGION} - - JWT_SECRET=${JWT_SECRET} - logging: - driver: "json-file" - options: - max-size: "10m" - max-file: "10" - networks: - - caddy - labels: - caddy.log: "localhost" - # for Swagger spec - caddy.route_0: /api-docs-json - caddy.route_0.reverse_proxy: "{{ upstreams 3000 }}" - # for health check - caddy.route_1: / - caddy.route_1.reverse_proxy: "{{ upstreams 3000 }}" - caddy.route_2: /auth - caddy.route_2.reverse_proxy: "{{ upstreams 3000 }}" - caddy.route_3: /comment/v1 - caddy.route_3.reverse_proxy: "{{ upstreams 3000 }}" - caddy.route_4: /comment/v1/* - caddy.route_4.reverse_proxy: "{{ upstreams 3000 }}" - caddy.route_5: /meeting/apply - caddy.route_5.reverse_proxy: "{{ upstreams 3000 }}" - caddy.route_6: /meeting - caddy.route_6.reverse_proxy: "{{ upstreams 3000 }}" - caddy.route_7: /meeting/v1/* - caddy.route_7.reverse_proxy: "{{ upstreams 3000 }}" - caddy.route_8: /meeting/* - caddy.route_8.reverse_proxy: "{{ upstreams 3000 }}" - caddy.route_9: /notice/v1 - caddy.route_9.reverse_proxy: "{{ upstreams 3000 }}" - caddy.route_10: /notice/v1/* - caddy.route_10.reverse_proxy: "{{ upstreams 3000 }}" - caddy.route_11: /post/v1 - caddy.route_11.reverse_proxy: "{{ upstreams 3000 }}" - caddy.route_12: /post/v1/* - caddy.route_12.reverse_proxy: "{{ upstreams 3000 }}" - caddy.route_13: /users - caddy.route_13.reverse_proxy: "{{ upstreams 3000 }}" - caddy.route_14: /users/* - caddy.route_14.reverse_proxy: "{{ upstreams 3000 }}" - - spring-blue: - image: makerscrew/main:develop - environment: - TZ: Asia/Seoul - container_name: spring-blue - ports: - - 4002:4000 - - 5557:5555 - restart: unless-stopped - depends_on: - - nestjs-blue - - pinpoint-agent - - redis - logging: - driver: "json-file" - options: - max-size: "10m" - max-file: "100" - networks: - - caddy - volumes: - - data-volume:/pinpoint-agent - labels: - caddy.log: "localhost" - # for Swagger spec - caddy.route_0: /api-docs/json - caddy.route_0.reverse_proxy: "{{ upstreams 4000 }}" - # for health check - caddy.route_1: /health/* - caddy.route_1.reverse_proxy: "{{ upstreams 4000 }}" - caddy.route_2: /user/v2 - caddy.route_2.reverse_proxy: "{{ upstreams 4000 }}" - caddy.route_3: /user/v2/* - caddy.route_3.reverse_proxy: "{{ upstreams 4000 }}" - caddy.route_4: /meeting/v2 - caddy.route_4.reverse_proxy: "{{ upstreams 4000 }}" - caddy.route_5: /meeting/v2/* - caddy.route_5.reverse_proxy: "{{ upstreams 4000 }}" - caddy.route_6: /post/v2 - caddy.route_6.reverse_proxy: "{{ upstreams 4000 }}" - caddy.route_7: /post/v2/* - caddy.route_7.reverse_proxy: "{{ upstreams 4000 }}" - caddy.route_8: /comment/v2 - caddy.route_8.reverse_proxy: "{{ upstreams 4000 }}" - caddy.route_9: /comment/v2/* - caddy.route_9.reverse_proxy: "{{ upstreams 4000 }}" - caddy.route_10: /notice/v2 - caddy.route_10.reverse_proxy: "{{ upstreams 4000 }}" - caddy.route_11: /advertisement/v2 - caddy.route_11.reverse_proxy: "{{ upstreams 4000 }}" - caddy.route_12: /advertisement/v2/* - caddy.route_12.reverse_proxy: "{{ upstreams 4000 }}" - caddy.route_13: /auth/v2 - caddy.route_13.reverse_proxy: "{{ upstreams 4000 }}" - caddy.route_14: /auth/v2/* - caddy.route_14.reverse_proxy: "{{ upstreams 4000 }}" - caddy.route_15: /8da2d7e6-72aa-4120-9e84-8f459a2584a1/* - caddy.route_15.reverse_proxy: "{{ upstreams 5555 }}" - caddy.route_16: /internal/* - caddy.route_16.reverse_proxy: "{{ upstreams 4000 }}" - -volumes: - data-volume: - -networks: - caddy: - external: true \ No newline at end of file