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
|
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"]
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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")
|
||||||
|
|
|
@ -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