mirror of
https://github.com/ION606/MailPocket.git
synced 2026-05-14 13:56:55 +00:00
moved to Docker
This commit is contained in:
@@ -0,0 +1 @@
|
||||
*.sum
|
||||
@@ -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"]
|
||||
@@ -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"]
|
||||
@@ -1,15 +1,27 @@
|
||||
PORT=15521
|
||||
VOLUME_NAME=mailpocket-data
|
||||
|
||||
.PHONY: run-batched run-sqlite setup-sqlite
|
||||
.PHONY: run-batched run-sqlite stop reset
|
||||
|
||||
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; \
|
||||
test-vol:
|
||||
@if ! docker volume ls -q | grep -q "^$(VOLUME_NAME)$$"; then \
|
||||
echo "Creating volume $(VOLUME_NAME)..."; \
|
||||
docker volume create $(VOLUME_NAME); \
|
||||
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
|
||||
@@ -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
|
||||
@@ -0,0 +1,7 @@
|
||||
module batched-server
|
||||
|
||||
go 1.23.6
|
||||
|
||||
replace shared => ../shared
|
||||
|
||||
require shared v0.0.0-00010101000000-000000000000
|
||||
+10
-10
@@ -6,6 +6,8 @@ import (
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"shared"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
@@ -14,6 +16,9 @@ import (
|
||||
var (
|
||||
emailQueue []string
|
||||
queueLock sync.Mutex
|
||||
dbdir string
|
||||
PORT string
|
||||
fpath string
|
||||
)
|
||||
|
||||
func saveEmails() {
|
||||
@@ -25,11 +30,11 @@ func saveEmails() {
|
||||
}
|
||||
|
||||
fileExists := true
|
||||
if _, err := os.Stat("emails.csv"); os.IsNotExist(err) {
|
||||
if _, err := os.Stat(fpath); os.IsNotExist(err) {
|
||||
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 {
|
||||
log.Println("Failed to open file:", err)
|
||||
return
|
||||
@@ -101,14 +106,9 @@ func submitHandler(w http.ResponseWriter, r *http.Request) {
|
||||
json.NewEncoder(w).Encode(map[string]string{"message": "data received"})
|
||||
}
|
||||
|
||||
|
||||
func main() {
|
||||
var PORT string
|
||||
if len(os.Args) > 1 {
|
||||
PORT = os.Args[1]
|
||||
} else {
|
||||
PORT = "15521"
|
||||
}
|
||||
PORT, dbdir = shared.GetArgs()
|
||||
fpath = filepath.Join(dbdir, "emails.csv")
|
||||
|
||||
http.HandleFunc("/submit", submitHandler)
|
||||
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
||||
@@ -118,4 +118,4 @@ func main() {
|
||||
|
||||
log.Println("Starting server on port", PORT)
|
||||
log.Fatal(http.ListenAndServe(":"+PORT, nil))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
module shared
|
||||
|
||||
go 1.23.6
|
||||
@@ -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
|
||||
}
|
||||
@@ -14,4 +14,7 @@ require (
|
||||
modernc.org/mathutil v1.7.1 // indirect
|
||||
modernc.org/memory v1.8.2 // indirect
|
||||
modernc.org/sqlite v1.35.0 // indirect
|
||||
shared v0.0.0-00010101000000-000000000000 // indirect
|
||||
)
|
||||
|
||||
replace shared => ../shared
|
||||
|
||||
+4
-10
@@ -5,21 +5,15 @@ import (
|
||||
"encoding/json"
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"shared"
|
||||
_ "modernc.org/sqlite"
|
||||
)
|
||||
|
||||
func main() {
|
||||
var PORT string
|
||||
if len(os.Args) > 1 {
|
||||
PORT = os.Args[1]
|
||||
} else {
|
||||
PORT = "15521"
|
||||
}
|
||||
|
||||
db, _ := sql.Open("sqlite", "emails.db")
|
||||
PORT, dbdir := shared.GetArgs()
|
||||
db, _ := sql.Open("sqlite", filepath.Join(dbdir, "emails.db"))
|
||||
db.Exec(`CREATE TABLE IF NOT EXISTS emails (
|
||||
email TEXT PRIMARY KEY,
|
||||
created TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
SERVER_URL="http://localhost:3000"
|
||||
SERVER_URL="http://localhost:15521"
|
||||
|
||||
test_server_running() {
|
||||
echo "Testing if the server is running..."
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
SERVER_URL="http://localhost:3000"
|
||||
SERVER_URL="http://localhost:15521"
|
||||
|
||||
test_server_running() {
|
||||
# testing if the server is running...
|
||||
|
||||
Reference in New Issue
Block a user