add Dockerfile to build the go app

This commit is contained in:
2025-01-11 01:00:32 +01:00
parent 77f391f24d
commit bda62c508e
4 changed files with 68 additions and 4 deletions

42
Dockerfile Normal file
View File

@@ -0,0 +1,42 @@
# Stage 1: Build the Go application
FROM golang:1.23 AS builder
ENV CGO_ENABLED=0
ENV GOOS=linux
ENV GOARCH=amd64
WORKDIR /app
# Copy the Go modules and dependencies
COPY ./golang/go.mod ./golang/go.sum ./
RUN go mod download
# Copy the source code
COPY ./golang/cmd ./cmd
COPY ./golang/assets ./assets
COPY ./golang/internal ./internal
# Build the application
RUN go build -o main cmd/frontend/*
# Stage 2: Run the application
FROM alpine:latest
ENV DB_HOST="10.99.0.3"
ENV DB_PORT="5432"
ENV DB_NAME="crowsnest"
ENV DB_USER="crow"
ENV DB_PASS=""
# Set the working directory
WORKDIR /app
# Copy the built binary from the builder stage
COPY --from=builder /app/main .
COPY ./golang/assets ./assets
# Expose the desired port (e.g., 8080)
EXPOSE 8080
# Command to run the application
CMD ["/app/main"]

Binary file not shown.

View File

@@ -1,6 +1,6 @@
serv: serv:
DB_DRIVER="postgres" DB_URL="user=crow password=4LlKpnQ2RZPzL13BSpkW4k dbname=crowsnest host=192.168.0.2 port=5432 sslmode=disable" go run cmd/frontend/* DB_USER=crow DB_PASS=4LlKpnQ2RZPzL13BSpkW4k DB_NAME=crowsnest DB_HOST=10.99.0.3 go run cmd/frontend/*
crawl: crawl:
DB_DRIVER="postgres" DB_URL="user=crow password=4LlKpnQ2RZPzL13BSpkW4k dbname=crowsnest host=192.168.0.2 port=5432 sslmode=disable" go run cmd/crawler/main.go DB_USER=crow DB_PASS=4LlKpnQ2RZPzL13BSpkW4k DB_NAME=crowsnest DB_HOST=192.168.0.2 go run cmd/crawler/main.go
summ: summ:
DB_DRIVER="postgres" DB_URL="user=crow password=4LlKpnQ2RZPzL13BSpkW4k dbname=crowsnest host=192.168.0.2 port=5432 sslmode=disable" go run cmd/summarizer/main.go DB_USER=crow DB_PASS=4LlKpnQ2RZPzL13BSpkW4k DB_NAME=crowsnest DB_HOST=192.168.0.2 go run cmd/summarizer/main.go

View File

@@ -3,6 +3,7 @@ package main
import ( import (
"crowsnest/internal/model/database" "crowsnest/internal/model/database"
"database/sql" "database/sql"
"fmt"
"log" "log"
"net/http" "net/http"
"os" "os"
@@ -16,14 +17,35 @@ type App struct {
func main() { func main() {
// collect environement variables // collect environement variables
databaseURL := os.Getenv("DB_URL") dbPass := os.Getenv("DB_PASS")
if dbPass == "" {
log.Fatal("empty DB_PASS")
}
dbHost := os.Getenv("DB_HOST")
if dbHost == "" {
log.Fatal("empty DB_HOST")
}
dbPort := os.Getenv("DB_PORT")
if dbPort == "" {
dbPort = "5432"
}
dbUser := os.Getenv("DB_USER")
if dbUser == "" {
dbUser = "postgres"
}
dbName := os.Getenv("DB_NAME")
// connect to database // connect to database
databaseURL := fmt.Sprintf("user=%s password=%s dbname=%s host=%s port=%s sslmode=disable",
dbUser, dbPass, dbName, dbHost, dbPort)
db, err := sql.Open("postgres", databaseURL) db, err := sql.Open("postgres", databaseURL)
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
defer db.Close() defer db.Close()
if err = db.Ping(); err != nil {
log.Fatal(err)
}
// define app // define app
app := &App{ app := &App{