mirror of
https://github.com/GRFreire/nthmail.git
synced 2026-01-08 12:29:38 +00:00
add dockerfile
This commit is contained in:
parent
5d5ee9c531
commit
a4efa6a35f
15
Dockerfile
Normal file
15
Dockerfile
Normal file
@ -0,0 +1,15 @@
|
||||
FROM golang:1.22 as build
|
||||
|
||||
RUN apt-get update && apt-get upgrade -y
|
||||
RUN apt-get install make sqlite3 -y
|
||||
|
||||
WORKDIR /app
|
||||
ENV DB_PATH=/data/db.db
|
||||
|
||||
RUN go install github.com/a-h/templ/cmd/templ@latest
|
||||
|
||||
COPY . .
|
||||
RUN go mod download
|
||||
RUN make -B
|
||||
|
||||
CMD ["./bin/server"]
|
||||
@ -30,6 +30,7 @@ Available env variables:
|
||||
- WEB_SERVER_PORT
|
||||
- MAIL_SERVER_PORT
|
||||
- MAIL_SERVER_DOMAIN
|
||||
- DB_PATH
|
||||
|
||||
```sh
|
||||
./bin/server
|
||||
|
||||
@ -5,29 +5,42 @@ import (
|
||||
"github.com/GRFreire/nthmail/pkg/mail_server"
|
||||
"github.com/GRFreire/nthmail/pkg/web_server"
|
||||
"log"
|
||||
"os"
|
||||
"sync"
|
||||
|
||||
_ "github.com/mattn/go-sqlite3"
|
||||
)
|
||||
|
||||
func main() {
|
||||
db, err := sql.Open("sqlite3", "./db.db")
|
||||
dbPath, exists := os.LookupEnv("DB_PATH")
|
||||
if !exists {
|
||||
dbPath = "./db.db"
|
||||
}
|
||||
|
||||
db, err := sql.Open("sqlite3", dbPath)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
defer db.Close()
|
||||
log.Println("Openning sqlite db at", dbPath)
|
||||
|
||||
var wg sync.WaitGroup
|
||||
wg.Add(1)
|
||||
go func(db *sql.DB) {
|
||||
defer wg.Done()
|
||||
mail_server.Start(db)
|
||||
err = mail_server.Start(db)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}(db)
|
||||
|
||||
wg.Add(1)
|
||||
go func(db *sql.DB) {
|
||||
defer wg.Done()
|
||||
web_server.Start(db)
|
||||
err = web_server.Start(db)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}(db)
|
||||
|
||||
wg.Wait()
|
||||
|
||||
2
go.mod
2
go.mod
@ -3,7 +3,7 @@ module github.com/GRFreire/nthmail
|
||||
go 1.21.6
|
||||
|
||||
require (
|
||||
github.com/a-h/templ v0.2.598 // indirect
|
||||
github.com/a-h/templ v0.2.747 // indirect
|
||||
github.com/aymerick/douceur v0.2.0 // indirect
|
||||
github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21 // indirect
|
||||
github.com/emersion/go-smtp v0.20.2 // indirect
|
||||
|
||||
2
go.sum
2
go.sum
@ -2,6 +2,8 @@ github.com/a-h/templ v0.2.543 h1:8YyLvyUtf0/IE2nIwZ62Z/m2o2NqwhnMynzOL78Lzbk=
|
||||
github.com/a-h/templ v0.2.543/go.mod h1:jP908DQCwI08IrnTalhzSEH9WJqG/Q94+EODQcJGFUA=
|
||||
github.com/a-h/templ v0.2.598 h1:6jMIHv6wQZvdPxTuv87erW4RqN/FPU0wk7ZHN5wVuuo=
|
||||
github.com/a-h/templ v0.2.598/go.mod h1:SA7mtYwVEajbIXFRh3vKdYm/4FYyLQAtPH1+KxzGPA8=
|
||||
github.com/a-h/templ v0.2.747 h1:D0dQ2lxC3W7Dxl6fxQ/1zZHBQslSkTSvl5FxP/CfdKg=
|
||||
github.com/a-h/templ v0.2.747/go.mod h1:69ObQIbrcuwPCU32ohNaWce3Cb7qM5GMiqN1K+2yop4=
|
||||
github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk=
|
||||
github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4=
|
||||
github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21 h1:OJyUGMJTzHTd1XQp98QTaHernxMYzRaOasRir9hUlFQ=
|
||||
|
||||
@ -108,7 +108,7 @@ func Start(db *sql.DB) error {
|
||||
port = 1025
|
||||
}
|
||||
|
||||
server.Addr = fmt.Sprintf("%s:%d", domain, port)
|
||||
server.Addr = fmt.Sprintf(":%d", port)
|
||||
server.Domain = domain
|
||||
server.WriteTimeout = 60 * time.Second
|
||||
server.ReadTimeout = 60 * time.Second
|
||||
@ -116,7 +116,7 @@ func Start(db *sql.DB) error {
|
||||
server.MaxRecipients = 50
|
||||
server.AllowInsecureAuth = true
|
||||
|
||||
log.Println("Starting server at", server.Addr)
|
||||
log.Println("Starting mail server at", server.Addr)
|
||||
if err := server.ListenAndServe(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -44,7 +44,7 @@ func Start(db *sql.DB) error {
|
||||
|
||||
router := server.Routes()
|
||||
|
||||
log.Println("Listening on port", port)
|
||||
log.Println("Starting web server at port", port)
|
||||
err = http.ListenAndServe(fmt.Sprintf(":%d", port), router)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
Loading…
Reference in New Issue
Block a user