moved to Docker

This commit is contained in:
2025-02-24 18:53:25 -05:00
parent 9626426455
commit c5cd1a4399
13 changed files with 137 additions and 33 deletions
+1
View File
@@ -0,0 +1 @@
*.sum
+19
View File
@@ -0,0 +1,19 @@
FROM golang:1.23.6-alpine
WORKDIR /app
RUN mkdir -p /app/data
COPY batched-server/ ./
COPY shared/ ./shared/
RUN go mod edit -replace shared=/app/shared
# Download dependencies
RUN go mod tidy
RUN go mod download
RUN go build -o batched-server .
EXPOSE 15521
CMD ["./batched-server", "15521"]
+19
View File
@@ -0,0 +1,19 @@
FROM golang:1.23.6-alpine
WORKDIR /app
RUN mkdir -p /app/data
COPY sqlite-server/ ./
COPY shared/ ./shared/
RUN go mod edit -replace shared=/app/shared
# Download dependencies
RUN go mod tidy
RUN go mod download
RUN go build -o sqlite-server .
EXPOSE 15521
CMD ["./sqlite-server", "15521"]
+23 -11
View File
@@ -1,15 +1,27 @@
PORT=15521 PORT=15521
VOLUME_NAME=mailpocket-data
.PHONY: run-batched run-sqlite setup-sqlite .PHONY: run-batched run-sqlite stop reset
run-batched: test-vol:
cd batched-server && go run main.go $(PORT) @if ! docker volume ls -q | grep -q "^$(VOLUME_NAME)$$"; then \
echo "Creating volume $(VOLUME_NAME)..."; \
run-sqlite: setup-sqlite docker volume create $(VOLUME_NAME); \
cd sqlite-server && go run main.go $(PORT)
setup-sqlite:
@if [ ! -f sqlite-server/go.mod ]; then \
cd sqlite-server && go mod init sqlite-server; \
fi fi
cd sqlite-server && go get modernc.org/sqlite
run-batched: test-vol stop
docker build -t batched-server -f Dockerfile.batched .
docker run -p $(PORT):$(PORT) --name batched-server -v $(VOLUME_NAME):/app/data batched-server
run-sqlite: test-vol stop
docker build -t sqlite-server -f Dockerfile.sqldb .
docker run -d -p $(PORT):$(PORT) --name sqlite-server -v $(VOLUME_NAME):/app/data sqlite-server
stop:
docker stop batched-server || true
docker stop sqlite-server || true
docker rm batched-server || true
docker rm sqlite-server || true
reset: stop
docker volume rm $(VOLUME_NAME) || true
+15
View File
@@ -0,0 +1,15 @@
PORT=15521
.PHONY: run-batched run-sqlite setup-sqlite
run-batched:
cd batched-server && go run main.go $(PORT)
run-sqlite: setup-sqlite
cd sqlite-server && go run main.go $(PORT)
setup-sqlite:
@if [ ! -f sqlite-server/go.mod ]; then \
cd sqlite-server && go mod init sqlite-server; \
fi
cd sqlite-server && go get modernc.org/sqlite
+7
View File
@@ -0,0 +1,7 @@
module batched-server
go 1.23.6
replace shared => ../shared
require shared v0.0.0-00010101000000-000000000000
+10 -10
View File
@@ -6,6 +6,8 @@ import (
"log" "log"
"net/http" "net/http"
"os" "os"
"path/filepath"
"shared"
"strings" "strings"
"sync" "sync"
"time" "time"
@@ -14,6 +16,9 @@ import (
var ( var (
emailQueue []string emailQueue []string
queueLock sync.Mutex queueLock sync.Mutex
dbdir string
PORT string
fpath string
) )
func saveEmails() { func saveEmails() {
@@ -25,11 +30,11 @@ func saveEmails() {
} }
fileExists := true fileExists := true
if _, err := os.Stat("emails.csv"); os.IsNotExist(err) { if _, err := os.Stat(fpath); os.IsNotExist(err) {
fileExists = false fileExists = false
} }
f, err := os.OpenFile("emails.csv", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) f, err := os.OpenFile(fpath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
if err != nil { if err != nil {
log.Println("Failed to open file:", err) log.Println("Failed to open file:", err)
return return
@@ -101,14 +106,9 @@ func submitHandler(w http.ResponseWriter, r *http.Request) {
json.NewEncoder(w).Encode(map[string]string{"message": "data received"}) json.NewEncoder(w).Encode(map[string]string{"message": "data received"})
} }
func main() { func main() {
var PORT string PORT, dbdir = shared.GetArgs()
if len(os.Args) > 1 { fpath = filepath.Join(dbdir, "emails.csv")
PORT = os.Args[1]
} else {
PORT = "15521"
}
http.HandleFunc("/submit", submitHandler) http.HandleFunc("/submit", submitHandler)
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
@@ -118,4 +118,4 @@ func main() {
log.Println("Starting server on port", PORT) log.Println("Starting server on port", PORT)
log.Fatal(http.ListenAndServe(":"+PORT, nil)) log.Fatal(http.ListenAndServe(":"+PORT, nil))
} }
+3
View File
@@ -0,0 +1,3 @@
module shared
go 1.23.6
+31
View File
@@ -0,0 +1,31 @@
package shared
import (
"log"
"os"
)
func GetArgs() (string, string) {
var PORT string
if len(os.Args) > 1 {
PORT = os.Args[1]
} else {
PORT = "15521"
}
dbdir := "data"
isDocker := os.Getenv("container") == "docker" || os.Getenv("DOCKER") == "true" || func() bool { _, err := os.Stat("/.dockerenv"); return err == nil }()
if isDocker {
dbdir = "/app/data"
}
if _, err := os.Stat(dbdir); os.IsNotExist(err) {
if err := os.MkdirAll(dbdir, 0755); err != nil {
log.Fatalf("Failed to create directory: %v", err)
}
}
return PORT, dbdir
}
+3
View File
@@ -14,4 +14,7 @@ require (
modernc.org/mathutil v1.7.1 // indirect modernc.org/mathutil v1.7.1 // indirect
modernc.org/memory v1.8.2 // indirect modernc.org/memory v1.8.2 // indirect
modernc.org/sqlite v1.35.0 // indirect modernc.org/sqlite v1.35.0 // indirect
shared v0.0.0-00010101000000-000000000000 // indirect
) )
replace shared => ../shared
+4 -10
View File
@@ -5,21 +5,15 @@ import (
"encoding/json" "encoding/json"
"log" "log"
"net/http" "net/http"
"os" "path/filepath"
"strings" "strings"
"shared"
_ "modernc.org/sqlite" _ "modernc.org/sqlite"
) )
func main() { func main() {
var PORT string PORT, dbdir := shared.GetArgs()
if len(os.Args) > 1 { db, _ := sql.Open("sqlite", filepath.Join(dbdir, "emails.db"))
PORT = os.Args[1]
} else {
PORT = "15521"
}
db, _ := sql.Open("sqlite", "emails.db")
db.Exec(`CREATE TABLE IF NOT EXISTS emails ( db.Exec(`CREATE TABLE IF NOT EXISTS emails (
email TEXT PRIMARY KEY, email TEXT PRIMARY KEY,
created TIMESTAMP DEFAULT CURRENT_TIMESTAMP created TIMESTAMP DEFAULT CURRENT_TIMESTAMP
+1 -1
View File
@@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
SERVER_URL="http://localhost:3000" SERVER_URL="http://localhost:15521"
test_server_running() { test_server_running() {
echo "Testing if the server is running..." echo "Testing if the server is running..."
+1 -1
View File
@@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
SERVER_URL="http://localhost:3000" SERVER_URL="http://localhost:15521"
test_server_running() { test_server_running() {
# testing if the server is running... # testing if the server is running...