Added docker-compose

This commit is contained in:
Владимир Шалимов 2024-06-09 20:46:43 +05:00
parent d2b2abc879
commit ce78d23db3
5 changed files with 67 additions and 11 deletions

View File

@ -1,4 +1,4 @@
FROM golang:1.16 as builder FROM golang:1.22.4-alpine as builder
WORKDIR /app WORKDIR /app
@ -6,7 +6,7 @@ WORKDIR /app
COPY . . COPY . .
# Сборка миграционного инструмента # Сборка миграционного инструмента
RUN go build -o migrations ./cli/migrations.go RUN go build -o migrations ./cli/migration.go
# Сборка основного приложения # Сборка основного приложения
@ -21,9 +21,6 @@ WORKDIR /root/
# Копирование исполняемых файлов из предыдущего шага # Копирование исполняемых файлов из предыдущего шага
COPY --from=builder /app/main . COPY --from=builder /app/main .
COPY --from=builder /app/migrations . COPY --from=builder /app/migrations .
# Запуск миграций
RUN ./migrations
# Запуск сервера COPY entrypoint.sh .
CMD ["./main"] ENTRYPOINT ["./entrypoint.sh"]

View File

@ -1,19 +1,29 @@
package main package main
import ( import (
"fmt"
"golang-test/database" "golang-test/database"
"log"
"os"
"gorm.io/driver/postgres" "gorm.io/driver/postgres"
"gorm.io/gorm" "gorm.io/gorm"
"log"
) )
func main() { func main() {
dsn := "host=localhost user=posgres password=example dbname=database port=5432 sslmode=disable TimeZone=Asia/Yekaterinburg" dbHost := os.Getenv("DB_HOST")
dbPort := os.Getenv("DB_PORT")
dbUser := os.Getenv("DB_USER")
dbPassword := os.Getenv("DB_PASSWORD")
dbName := os.Getenv("DB_NAME")
dsn := fmt.Sprintf("host=%s port=%s user=%s password=%s dbname=%s sslmode=disable",
dbHost, dbPort, dbUser, dbPassword, dbName)
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{}) db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
if err != nil { if err != nil {
panic("failed to connect database") panic("failed to connect database")
} }
// Migrate the schema
err = db.AutoMigrate(&database.Manufacturer{}, &database.Product{}, &database.User{}) err = db.AutoMigrate(&database.Manufacturer{}, &database.Product{}, &database.User{})
if err != nil { if err != nil {
return return

View File

@ -1,6 +1,9 @@
package database package database
import ( import (
"fmt"
"os"
"gorm.io/driver/postgres" "gorm.io/driver/postgres"
"gorm.io/gorm" "gorm.io/gorm"
) )
@ -8,7 +11,14 @@ import (
var db *gorm.DB var db *gorm.DB
func init() { func init() {
dsn := "host=localhost user=posgres password=example dbname=database port=5432 sslmode=disable TimeZone=Asia/Yekaterinburg" dbHost := os.Getenv("DB_HOST")
dbPort := os.Getenv("DB_PORT")
dbUser := os.Getenv("DB_USER")
dbPassword := os.Getenv("DB_PASSWORD")
dbName := os.Getenv("DB_NAME")
dsn := fmt.Sprintf("host=%s port=%s user=%s password=%s dbname=%s sslmode=disable",
dbHost, dbPort, dbUser, dbPassword, dbName)
conn, err := gorm.Open(postgres.Open(dsn), &gorm.Config{}) conn, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
if err != nil { if err != nil {
panic("failed to connect database") panic("failed to connect database")

34
docker-compose.yml Normal file
View File

@ -0,0 +1,34 @@
# Use postgres/example user/password credentials
version: '3.9'
services:
db:
image: postgres
restart: always
shm_size: 128mb
environment:
POSTGRES_PASSWORD: example
POSTGRES_DB: database
POSTGRES_USER: postgres
adminer:
image: adminer
restart: always
ports:
- 8000:8080
api:
image: ravonzz/go-testapi
restart: always
environment:
DB_HOST: db
DB_PORT: 5432
DB_USER: postgres
DB_PASSWORD: example
DB_NAME: database
ports:
- 8080:8080

5
entrypoint.sh Executable file
View File

@ -0,0 +1,5 @@
#!/bin/sh
# Запуск миграций
./migrations
# Запуск основного приложения
exec ./main