#17 add dockerfile for api

This commit is contained in:
2024-07-28 15:07:19 +02:00
parent 1136133c5a
commit 85c684def7
12 changed files with 34 additions and 30 deletions

15
api/Dockerfile Normal file
View File

@@ -0,0 +1,15 @@
FROM golang:1.22 as builder
WORKDIR /app
COPY go.mod go.sum main.go ./
COPY src src
RUN go build -o /bin/api ./main.go
FROM debian:stable-slim
COPY --from=builder /bin/api /app/api
COPY migrations /migrations
EXPOSE 8080
CMD ["/app/api"]

View File

@@ -1,7 +0,0 @@
package context
import "database/sql"
type Context struct {
DB *sql.DB
}

View File

@@ -5,7 +5,6 @@ go 1.22.5
require ( require (
firebase.google.com/go v3.13.0+incompatible firebase.google.com/go v3.13.0+incompatible
github.com/golang-migrate/migrate/v4 v4.17.1 github.com/golang-migrate/migrate/v4 v4.17.1
github.com/lib/pq v1.10.9
github.com/mattn/go-sqlite3 v1.14.22 github.com/mattn/go-sqlite3 v1.14.22
google.golang.org/api v0.189.0 google.golang.org/api v0.189.0
) )

View File

@@ -75,8 +75,6 @@ github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY
github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=
github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw=
github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU=
github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=

View File

@@ -1,9 +1,9 @@
package main package main
import ( import (
"api/context" "api/src/middleware"
"api/middleware" "api/src/utils"
"api/workout" "api/src/workout"
"database/sql" "database/sql"
"log" "log"
@@ -13,14 +13,9 @@ import (
) )
func main() { func main() {
log.Println("Starting server...")
context.InitializeDB() db := utils.InitializeDB()
db, err := sql.Open("sqlite3", "./data.db")
if err != nil {
log.Fatal(err)
}
defer db.Close()
var router = getRouter(db) var router = getRouter(db)
@@ -30,7 +25,7 @@ func main() {
} }
log.Println("Starting server at", server.Addr) log.Println("Starting server at", server.Addr)
err = server.ListenAndServe() err := server.ListenAndServe()
if err != nil { if err != nil {
panic(err) panic(err)
} }

View File

@@ -1,7 +1,8 @@
package middleware package middleware
import ( import (
"api/utils" "api/src/utils"
"context" "context"
"net/http" "net/http"
) )

View File

@@ -1,4 +1,4 @@
package context package utils
import ( import (
"database/sql" "database/sql"
@@ -7,14 +7,13 @@ import (
"github.com/golang-migrate/migrate/v4" "github.com/golang-migrate/migrate/v4"
"github.com/golang-migrate/migrate/v4/database/sqlite3" "github.com/golang-migrate/migrate/v4/database/sqlite3"
_ "github.com/golang-migrate/migrate/v4/source/file" _ "github.com/golang-migrate/migrate/v4/source/file"
_ "github.com/lib/pq"
) )
func InitializeDB() *sql.DB { func InitializeDB() *sql.DB {
db, err := sql.Open("sqlite3", "./data.db") db, err := sql.Open("sqlite3", "./data.db")
if err != nil { if err != nil {
log.Fatal(err) log.Fatal("Could not open Database data.db: ", err)
} }
defer db.Close() defer db.Close()
@@ -26,7 +25,7 @@ func InitializeDB() *sql.DB {
func runMigrations(db *sql.DB) { func runMigrations(db *sql.DB) {
driver, err := sqlite3.WithInstance(db, &sqlite3.Config{}) driver, err := sqlite3.WithInstance(db, &sqlite3.Config{})
if err != nil { if err != nil {
panic(err) log.Fatal(err)
} }
m, err := migrate.NewWithDatabaseInstance( m, err := migrate.NewWithDatabaseInstance(
@@ -34,8 +33,11 @@ func runMigrations(db *sql.DB) {
"", "",
driver) driver)
if err != nil { if err != nil {
panic(err) log.Fatal("Could not create migrations instance: ", err)
} }
m.Up() err = m.Up()
if err != nil {
log.Fatal("Could not run migrations: ", err)
}
} }

View File

@@ -1,8 +1,9 @@
package workout package workout
import ( import (
"api/middleware" "api/src/middleware"
"api/utils" "api/src/utils"
"database/sql" "database/sql"
"net/http" "net/http"
"strconv" "strconv"