add dockerfile

This commit is contained in:
Guilherme Rugai Freire 2024-07-10 22:15:18 -03:00
parent 5d5ee9c531
commit a4efa6a35f
No known key found for this signature in database
GPG Key ID: AC1D9B6E48E16AC1
7 changed files with 38 additions and 7 deletions

15
Dockerfile Normal file
View 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"]

View File

@ -30,6 +30,7 @@ Available env variables:
- WEB_SERVER_PORT
- MAIL_SERVER_PORT
- MAIL_SERVER_DOMAIN
- DB_PATH
```sh
./bin/server

View File

@ -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
View File

@ -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
View File

@ -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=

View File

@ -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
}

View File

@ -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