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
@ -6,7 +6,7 @@ WORKDIR /app
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/migrations .
# Запуск миграций
RUN ./migrations
# Запуск сервера
CMD ["./main"]
COPY entrypoint.sh .
ENTRYPOINT ["./entrypoint.sh"]

View File

@ -1,19 +1,29 @@
package main
import (
"fmt"
"golang-test/database"
"log"
"os"
"gorm.io/driver/postgres"
"gorm.io/gorm"
"log"
)
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{})
if err != nil {
panic("failed to connect database")
}
// Migrate the schema
err = db.AutoMigrate(&database.Manufacturer{}, &database.Product{}, &database.User{})
if err != nil {
return

View File

@ -1,6 +1,9 @@
package database
import (
"fmt"
"os"
"gorm.io/driver/postgres"
"gorm.io/gorm"
)
@ -8,7 +11,14 @@ import (
var db *gorm.DB
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{})
if err != nil {
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