diff --git a/Docker/deploy.sh b/Docker/deploy.sh new file mode 100755 index 0000000..a1c1e3e --- /dev/null +++ b/Docker/deploy.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +set -euo pipefail + +BRANCH=$1 + +# Директории +TEMPLATE_DIR="/deploy/templates" +DEPLOY_DIR="/deploy/templates/$BRANCH" + +if [ "$BRANCH" = "main" ]; then + TEMPLATE_FILE="docker-compose.template.yml" +else + TEMPLATE_FILE="docker-compose.dev-template.yml" +fi + +# Создаем директорию для деплоя +mkdir -p $DEPLOY_DIR + +# Копируем и обновляем docker-compose.yml +sed "s|{{BRANCH}}|$BRANCH|g" $TEMPLATE_DIR/$TEMPLATE_FILE > $DEPLOY_DIR/docker-compose.yml + +# Перезапускаем сервисы +cd $DEPLOY_DIR +docker-compose down +docker-compose pull +docker-compose up -d + +# Очистка старых образов +docker image prune -f diff --git a/Docker/templates/docker-compose.dev-template.yml b/Docker/templates/docker-compose.dev-template.yml new file mode 100644 index 0000000..71783b5 --- /dev/null +++ b/Docker/templates/docker-compose.dev-template.yml @@ -0,0 +1,34 @@ +services: + api-dev: + image: git.prtsie.ru/prtsie/schengen-visa-{{BRANCH}} + container_name: visa-api-{{BRANCH}} + ports: + - "5001:5000" + depends_on: + postgres-db-dev: + condition: service_healthy + environment: + - ASPNETCORE_ENVIRONMENT=Development + - ConnectionStrings__connectionString=Host=postgres-db-dev;Port=5432;Database=visa;Username=postgres;Password=Qwerty123456! + networks: + - app-network-{{BRANCH}} + + postgres-db-dev: + image: postgres:latest + container_name: visa-db-{{BRANCH}} + environment: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: Qwerty123456! + POSTGRES_DATABASE: visa + networks: + - app-network-{{BRANCH}} + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres -d visa"] + interval: 5s + timeout: 5s + retries: 10 + start_period: 10s + +networks: + app-network-{{BRANCH}}: + driver: bridge diff --git a/Docker/templates/docker-compose.template.yml b/Docker/templates/docker-compose.template.yml new file mode 100644 index 0000000..eca0b97 --- /dev/null +++ b/Docker/templates/docker-compose.template.yml @@ -0,0 +1,34 @@ +services: + api: + image: git.prtsie.ru/prtsie/schengen-visa-{{BRANCH}} + container_name: visa-api-{{BRANCH}} + ports: + - "5000:5000" + depends_on: + postgres-db: + condition: service_healthy + environment: + - ASPNETCORE_ENVIRONMENT=Development + - ConnectionStrings__connectionString=Host=postgres-db;Port=5432;Database=visa;Username=postgres;Password=Qwerty123456! + networks: + - app-network-{{BRANCH}} + + postgres-db: + image: postgres:latest + container_name: visa-db-{{BRANCH}} + environment: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: Qwerty123456! + POSTGRES_DATABASE: visa + networks: + - app-network-{{BRANCH}} + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres -d visa"] + interval: 5s + timeout: 5s + retries: 10 + start_period: 10s + +networks: + app-network-{{BRANCH}}: + driver: bridge