DEV_DB change db creds
Test Workflow / test (push) Successful in 4s

This commit is contained in:
vladp
2026-01-15 16:17:03 +07:00
parent 82a57a2983
commit 1a6823f7a9
4 changed files with 102 additions and 71 deletions
+3 -3
View File
@@ -1,10 +1,10 @@
POSTGRES_DB=no_copy_ POSTGRES_DB=no_copy_
POSTGRES_USER=postgres POSTGRES_USER=ncp_db
POSTGRES_PASSWORD=postgres POSTGRES_PASSWORD=ncpDbApp
POSTGRES_PORT=5432 POSTGRES_PORT=5432
POSTGRES_HOST=postgres POSTGRES_HOST=postgres
REDIS_HOST=redis REDIS_HOST=redis
REDIS_PORT=6379 REDIS_PORT=6379
SERVER_PORT=8080 SERVER_PORT=8080
+14 -5
View File
@@ -18,7 +18,7 @@ services:
restart: unless-stopped restart: unless-stopped
db: db:
image: postgres:17 image: postgres:17.7
restart: always restart: always
deploy: deploy:
resources: resources:
@@ -30,14 +30,17 @@ services:
memory: 1G memory: 1G
environment: environment:
POSTGRES_DB: no_copy_ POSTGRES_DB: no_copy_
POSTGRES_USER: postgres # POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres # POSTGRES_PASSWORD: postgres
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_SHARED_BUFFERS: 512MB POSTGRES_SHARED_BUFFERS: 512MB
POSTGRES_EFFECTIVE_CACHE_SIZE: 1536MB POSTGRES_EFFECTIVE_CACHE_SIZE: 1536MB
ports: ports:
- "54320:5432" - "54320:5432"
volumes: volumes:
- pgdata:/var/lib/postgresql/data - pgdata:/var/lib/postgresql/data
- ./init-scripts:/docker-entrypoint-initdb.d:ro
container_name: postgres container_name: postgres
networks: networks:
app-network: app-network:
@@ -61,8 +64,10 @@ services:
# FILE_CHUNK_SIZE: 1048576 # FILE_CHUNK_SIZE: 1048576
FILE_CHUNK_SIZE: 1000000 FILE_CHUNK_SIZE: 1000000
POSTGRES_DB: no_copy_ POSTGRES_DB: no_copy_
POSTGRES_USER: postgres # POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres # POSTGRES_PASSWORD: postgres
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_PORT: 5432 POSTGRES_PORT: 5432
POSTGRES_HOST: db POSTGRES_HOST: db
STORAGE_SERVICE_URL: http://storage:8081 STORAGE_SERVICE_URL: http://storage:8081
@@ -82,6 +87,10 @@ services:
- api - api
volumes: volumes:
- uploads_data:/data/uploads:rw - uploads_data:/data/uploads:rw
healthcheck:
test: [ "CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d no_copy_" ]
interval: 10s
retries: 5
grafana: grafana:
image: grafana/grafana:10.3.1 image: grafana/grafana:10.3.1
+66 -63
View File
@@ -30,6 +30,7 @@ pipeline {
} }
} }
stage('Deploy with docker-compose') { stage('Deploy with docker-compose') {
steps { steps {
script { script {
@@ -38,71 +39,73 @@ pipeline {
credentialsId: 'server-root-password', credentialsId: 'server-root-password',
usernameVariable: 'SSH_USER', usernameVariable: 'SSH_USER',
passwordVariable: 'SSH_PASS' passwordVariable: 'SSH_PASS'
) ),
string(credentialsId: 'db-user', variable: 'DB_USER'),
string(credentialsId: 'db-password', variable: 'DB_PASSWORD')
]) { ]) {
sh """ sh """
echo "Deploying branch: ${params.BRANCH}" echo "Deploying branch: ${params.BRANCH}"
echo "Copying files to server..." echo "Copying files to server..."
sshpass -p '$SSH_PASS' ssh -o StrictHostKeyChecking=no $SSH_USER@$SERVER "mkdir -p /opt/deployments/${params.BRANCH}" sshpass -p '$SSH_PASS' ssh -o StrictHostKeyChecking=no $SSH_USER@$SERVER "mkdir -p /opt/deployments/${params.BRANCH}"
sshpass -p '$SSH_PASS' scp -r -o StrictHostKeyChecking=no ./* $SSH_USER@$SERVER:/opt/deployments/${params.BRANCH}/ sshpass -p '$SSH_PASS' scp -r -o StrictHostKeyChecking=no ./* $SSH_USER@$SERVER:/opt/deployments/${params.BRANCH}/
sshpass -p '$SSH_PASS' ssh -o StrictHostKeyChecking=no $SSH_USER@$SERVER " sshpass -p '$SSH_PASS' ssh -o StrictHostKeyChecking=no $SSH_USER@$SERVER "
cd /opt/deployments/${params.BRANCH} cd /opt/deployments/${params.BRANCH}
echo '1. Остановка старого приложения...' echo '1. Остановка старого приложения...'
docker stop app-backend 2>/dev/null || echo 'Контейнер не найден' docker stop app-backend 2>/dev/null || echo 'Контейнер не найден'
docker rm app-backend 2>/dev/null || echo 'Контейнер не найден' docker rm app-backend 2>/dev/null || echo 'Контейнер не найден'
echo '2. Удаление старых образов...' echo '2. Удаление старых образов...'
docker images --filter 'reference=*app*' -q | xargs -r docker rmi -f 2>/dev/null || echo 'Нет образов для удаления' docker images --filter 'reference=*app*' -q | xargs -r docker rmi -f 2>/dev/null || echo 'Нет образов для удаления'
echo '3. Создание сети если нужно...' echo '3. Создание сети если нужно...'
docker network create app-network 2>/dev/null || echo 'Сеть уже существует' docker network create app-network 2>/dev/null || echo 'Сеть уже существует'
echo '4. Запуск инфраструктуры...' echo '4. Запуск инфраструктуры...'
docker-compose up -d db storage docker-compose up -d db storage
echo '5. Ожидание PostgreSQL...' echo '5. Ожидание PostgreSQL...'
sleep 10 sleep 10
echo '6. Сборка нового образа приложения...' echo '6. Сборка нового образа приложения...'
docker build --no-cache -t app-backend:latest . docker build --no-cache -t app-backend:latest .
echo '7. Запуск приложения...' echo '7. Запуск приложения...'
docker run -d \\ docker run -d \\
--name app-backend \\ --name app-backend \\
--network app-network \\ --network app-network \\
--network-alias app \\ --network-alias app \\
-p 80:8080 \\ -p 80:8080 \\
-v uploads_data:/data/uploads:rw \\ -v uploads_data:/data/uploads:rw \\
-e POSTGRES_DB=no_copy_ \\ -e POSTGRES_DB=no_copy_ \\
-e POSTGRES_USER=postgres \\ -e POSTGRES_USER=$DB_USER \\
-e POSTGRES_PASSWORD=postgres \\ -e POSTGRES_PASSWORD=$DB_PASSWORD \\
-e POSTGRES_PORT=5432 \\ -e POSTGRES_PORT=5432 \\
-e POSTGRES_HOST=db \\ -e POSTGRES_HOST=db \\
--restart unless-stopped \\ --restart unless-stopped \\
app-backend:latest app-backend:latest
echo '8. Запуск мониторинга...' echo '8. Запуск мониторинга...'
docker-compose up -d grafana prometheus loki tempo alloy docker-compose up -d grafana prometheus loki tempo alloy
echo '9. Проверка...' echo '9. Проверка...'
sleep 5 sleep 5
echo 'Статус контейнеров:' echo 'Статус контейнеров:'
docker ps --format 'table {{.Names}}\\t{{.Image}}\\t{{.Status}}' docker ps --format 'table {{.Names}}\\t{{.Image}}\\t{{.Status}}'
echo '10. Проверка health...' echo '10. Проверка health...'
if curl -s -f http://localhost:80/health > /dev/null 2>&1; then if curl -s -f http://localhost:80/health > /dev/null 2>&1; then
echo 'Приложение работает' echo 'Приложение работает'
echo 'URL: http://${params.SERVER}:80' echo 'URL: http://${params.SERVER}:80'
else else
echo 'Проверка health не удалась' echo 'Проверка health не удалась'
docker logs app-backend --tail=20 docker logs app-backend --tail=20
fi fi
" "
""" """
} }
} }
} }
+19
View File
@@ -0,0 +1,19 @@
DO
$do$
BEGIN
IF NOT EXISTS (SELECT FROM pg_catalog.pg_roles WHERE rolname = 'ncp_db') THEN
CREATE USER ncp_db WITH PASSWORD 'ncpDbApp';
END IF;
END
$do$;
DO
$do$
BEGIN
IF NOT EXISTS (SELECT FROM pg_database WHERE datname = 'no_copy_') THEN
CREATE DATABASE no_copy_ OWNER ncp_db;
END IF;
END
$do$;
GRANT ALL PRIVILEGES ON DATABASE no_copy_ TO ncp_db;