Added docker-compose
This commit is contained in:
parent
d2b2abc879
commit
ce78d23db3
11
Dockerfile
11
Dockerfile
|
@ -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"]
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
#!/bin/sh
|
||||
# Запуск миграций
|
||||
./migrations
|
||||
# Запуск основного приложения
|
||||
exec ./main
|
Loading…
Reference in New Issue