БД на Postgres для инструктажей

1) General
This commit is contained in:
Витковских Евгений 2025-07-15 11:51:38 +03:00
commit 1acccf472b
10 changed files with 183 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
.idea
.vs

View File

@ -0,0 +1,3 @@
CREATE SCHEMA Cabinet;
CREATE SCHEMA Auth;
CREATE SCHEMA Billing;

View File

@ -0,0 +1,16 @@
CREATE TABLE IF NOT EXISTS Cabinet.Cabinet
(
id SERIAL PRIMARY KEY,
title text
);
CREATE TABLE IF NOT EXISTS Auth."user" (
id SERIAL PRIMARY KEY,
fullname text,
email text,
cabinetid integer DEFAULT 0,
isadmin boolean DEFAULT false,
login TEXT,
password TEXT,
FOREIGN KEY (CabinetId) REFERENCES Cabinet.Cabinet (Id)
);

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-latest.xsd">
<!--=======================================Создание базы====================================-->
<changeSet id="GeneralSchemas" author="Vitkovskikh">
<sqlFile path="/Deployment/schema.psql" splitStatements="false"/>
</changeSet>
<changeSet id="GeneralTables" author="Vitkovskikh">
<sqlFile path="/Deployment/tables.psql" splitStatements="false"/>
</changeSet>
<!--=======================================Обновления=======================================-->
<!--<changeSet id="Updates_2025_07_15" author="Vitkovskikh">
<sqlFile path="/updates/2025.07.15.psql" splitStatements="false"/>
</changeSet>-->
</databaseChangeLog>

View File

@ -0,0 +1,22 @@
version: '3.8'
name: instructage-database
services:
instructage-liquibase-accident:
container_name: instructage-liquibase-general
image: liquibase/liquibase:latest-alpine
volumes:
- .:/liquibase/changelog/
entrypoint:
- "/bin/sh"
- "-c"
- sleep 0s && liquibase --defaultsFile=/liquibase/changelog/liquibase.properties update
# docker network create instructage-network
networks:
default:
external: true
name: instructage-network

View File

@ -0,0 +1,5 @@
searchPath: /liquibase/changelog
url: jdbc:postgresql://pg-instructage/general
changeLogFile: dbchangelog-master.xml
username:postgres
password:f0e87ce7-b857-4bbc-907c-ff0ab90514ad

18
Deploy.ps1 Normal file
View File

@ -0,0 +1,18 @@
docker network create instructage-network
Set-Location PGServer
docker-compose down -v
docker-compose up --build -d
Set-Location ../pgAdmin
docker-compose down -v
docker-compose up --build -d
timeout 5
Set-Location ../db
Set-Location General
docker-compose down -v
docker-compose up --build -d
Set-Location ../../

View File

@ -0,0 +1,60 @@
version: '3.8'
name: instructage-database
services:
pg-instructage:
container_name: pg-instructage
image: postgres:latest
restart: always
ports:
- 9999:5432
environment:
POSTGRES_DB: postgres
POSTGRES_USER: postgres
POSTGRES_PASSWORD: "f0e87ce7-b857-4bbc-907c-ff0ab90514ad"
PGDATA: "/data"
#Включение логирования
command: [ "postgres", "-c", "log_statement=all", "-c", "log_destination=stderr", "-c", "log_duration=off" , "-c", "log_min_duration_statement=1000ms" ]
volumes:
#Путь, по которому будут лежать файлы баз данных
- instructage-db-data:/data
#При первом запуске через точку инициализации создаются пустые базы данных для дальнейшего заполнения через liquibase
- ./docker-entrypoint-initdb.d/:/docker-entrypoint-initdb.d/
# pgadmin:
# container_name: pgadmin
# image: dpage/pgadmin4:latest
# ports:
# - 15432:80
# environment:
# PGADMIN_DEFAULT_EMAIL: sa@sa.sa
# PGADMIN_DEFAULT_PASSWORD: simDev321
# PGADMIN_LISTEN_PORT: 80
# volumes:
# - pgadmin:/var/lib/pgadmin
# depends_on:
# - pg-instructage
volumes:
instructage-db-data:
# driver: local
# driver_opts:
# o: bind
# type: none
# device: C:/Postgres/pgdata
# pgadmin:
# name: pgadmin
# driver: local
# driver_opts:
# o: bind
# type: none
# device: C:/Postgres/PgAdmin
# docker network create instructage-network
networks:
default:
external: true
name: instructage-network

View File

@ -0,0 +1 @@
CREATE DATABASE General;

View File

@ -0,0 +1,33 @@
version: '3.8'
name: instructage-database
services:
pgadmin:
container_name: pgadmin
image: dpage/pgadmin4:latest
ports:
- 15432:80
environment:
PGADMIN_DEFAULT_EMAIL: sa@sa.sa
PGADMIN_DEFAULT_PASSWORD: simDev321
PGADMIN_LISTEN_PORT: 80
volumes:
- pgadmin:/var/lib/pgadmin
# depends_on:
# - postgres
volumes:
pgadmin:
# name: pgadmin
# driver: local
# driver_opts:
# o: bind
# type: none
# device: D:/Docker/PostgreSQL/PgAdmin
# docker network create fgissout-network
networks:
default:
external: true
name: instructage-network