From 32daac3a49b1da38266d03ab350c40df6954ccf7 Mon Sep 17 00:00:00 2001 From: valitovgaziz Date: Sun, 11 Aug 2024 17:40:19 +0500 Subject: [PATCH] goose migration established --- .env | 21 ++++++++++------ api/src/initializers/initializers.go | 10 ++++---- docker-compose.yaml | 25 ++++++++++++++----- migrator/Dockerfile | 10 +++----- .../20240808094749_create_users_table.sql | 3 ++- 5 files changed, 43 insertions(+), 26 deletions(-) diff --git a/.env b/.env index eaf333a..4fd85c3 100644 --- a/.env +++ b/.env @@ -1,11 +1,16 @@ -DB_USER=postgres -DB_PASSWORD=postgres -DB_NAME=postgres -DB_PORT=5432 -HOST_DB=db -SERVER_PORT=8000 +PGHOST=db +PGPORT=5432 +PGUSER=postgres +PGPASSWORD=postgres +PGDATABASE=postgres SSLmode=disable -POSTGRESQL_URL='postgres://postgres:postgres@db:5432/postgres?sslmode=disable' +PGURL='postgres://postgres:postgres@db:5432/postgres?sslmode=disable' + +# SERVER +SERVER_PORT=8000 # MIGRATOR -MIGRATOR_PORT=3000 \ No newline at end of file +MIGRATOR_PORT=3000 +GOOSE_DRIVER=postgres +GOOSE_DBSTRING='user=postgres dbname=postgres sslmode=disable' +GOOSE_MIGRATION_DIR=migrations diff --git a/api/src/initializers/initializers.go b/api/src/initializers/initializers.go index 236d9ec..5ea2c8a 100644 --- a/api/src/initializers/initializers.go +++ b/api/src/initializers/initializers.go @@ -23,11 +23,11 @@ func InitDBconnection() { slog.Info("Init DB connection") dsn := fmt.Sprintf( "host=%s user=%s password=%s dbname=%s port=%s sslmode=disable TimeZone=Asia/Yekaterinburg", - os.Getenv("HOST_DB"), - os.Getenv("DB_USER"), - os.Getenv("DB_PASSWORD"), - os.Getenv("DB_NAME"), - os.Getenv("DB_PORT"), + os.Getenv("PGHOST"), + os.Getenv("PGUSER"), + os.Getenv("PGPASSWORD"), + os.Getenv("PGDATABASE"), + os.Getenv("PGPORT"), ) db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{ Logger: logger.Default.LogMode(logger.Info), diff --git a/docker-compose.yaml b/docker-compose.yaml index dcfae78..36f7d61 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -5,10 +5,13 @@ services: env_file: - .env ports: - - "${DB_PORT}:${DB_PORT}" + - "${PGPORT}:${PGPORT}" volumes: - postgres-db:/var/lib/postgresql/data - + environment: + - POSTGRES_USER=${PGUSER} + - POSTGRES_PASSWORD=${PGPASSWORD} + - POSTGRES_DB=${PGDATABASE} api: build: @@ -25,11 +28,21 @@ services: command: ./bin/api.exe migrator: - build: ./migrator + build: + context: ./migrator + dockerfile: Dockerfile env_file: - .env - ports: - - "${MIGRATOR_PORT}:${MIGRATOR_PORT}" + depends_on: + - api + - db + volumes: + - goose:/migrations + environment: + - GOOSE_DRIVER=${GOOSE_DRIVER} + - GOOSE_DBSTRING=${GOOSE_DBSTRING} + command: goose up volumes: - postgres-db: \ No newline at end of file + postgres-db: + goose: \ No newline at end of file diff --git a/migrator/Dockerfile b/migrator/Dockerfile index c513482..95013ea 100644 --- a/migrator/Dockerfile +++ b/migrator/Dockerfile @@ -1,11 +1,9 @@ -FROM golang:1.22.5 +FROM golang:latest WORKDIR /app -COPY migrations/* app/migrations/ +COPY . . -COPY go.mod app/ +RUN go mod tidy -RUN go install github.com/pressly/goose/v3/cmd/goose@latest - -CMD ["goose", "-dir=/app/migrations", "user=${DB_USER}", "dbname=${DB_NAME}", "sslmode=${SSLmode}" "up"] \ No newline at end of file +RUN go install github.com/pressly/goose/v3/cmd/goose@latest \ No newline at end of file diff --git a/migrator/migrations/20240808094749_create_users_table.sql b/migrator/migrations/20240808094749_create_users_table.sql index a63ac39..f4e2b95 100644 --- a/migrator/migrations/20240808094749_create_users_table.sql +++ b/migrator/migrations/20240808094749_create_users_table.sql @@ -1,9 +1,10 @@ +-- Active: 1723171055346@@127.0.0.1@5432@postgres@public -- +goose Up -- +goose StatementBegin CREATE TABLE IF NOT EXISTS users( id UUID NOT NULL PRIMARY KEY, name VARCHAR(50) NOT NULL, - email VARCHAR(50) NOT NULL UNIQUE INDEX, + email VARCHAR(50) NOT NULL, password VARCHAR(500) NOT NULL, phone VARCHAR(50) );