mirror of
https://github.com/ION606/MailPocket.git
synced 2026-05-14 22:06: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
|
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
|
||||||
@@ -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"
|
"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))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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/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
@@ -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
@@ -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
@@ -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...
|
||||||
|
|||||||
Reference in New Issue
Block a user