dockerfile + db relocation
This commit is contained in:
4
.dockerignore
Normal file
4
.dockerignore
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
.vscode
|
||||||
|
.git
|
||||||
|
data/
|
||||||
|
bot.db
|
||||||
33
Dockerfile
Normal file
33
Dockerfile
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
FROM golang:1.25-alpine AS builder
|
||||||
|
|
||||||
|
# Ensure CGO is off for a static binary
|
||||||
|
ENV CGO_ENABLED=0
|
||||||
|
# Ensure Go modules are strictly enforced
|
||||||
|
ENV GO111MODULE=on
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# Copy only the dependency files first
|
||||||
|
COPY go.mod go.sum ./
|
||||||
|
RUN go mod download
|
||||||
|
|
||||||
|
# Copy the entire project structure
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
# Build from the current directory (.) so it finds the module root
|
||||||
|
RUN go build -o /app/bot .
|
||||||
|
|
||||||
|
FROM alpine:latest
|
||||||
|
|
||||||
|
RUN apk --no-cache add ca-certificates
|
||||||
|
RUN mkdir /data
|
||||||
|
|
||||||
|
WORKDIR /root/
|
||||||
|
|
||||||
|
COPY --from=builder /app/bot .
|
||||||
|
COPY --from=builder /app/templates ./templates
|
||||||
|
COPY .env .
|
||||||
|
|
||||||
|
ENV DB_PATH=/data/bot.db
|
||||||
|
|
||||||
|
CMD ["./bot"]
|
||||||
38
README.md
38
README.md
@@ -1,2 +1,40 @@
|
|||||||
# whatsapp-bot
|
# whatsapp-bot
|
||||||
|
|
||||||
|
## 🐳 Docker Deployment (Server)
|
||||||
|
|
||||||
|
Build and run the central inventory server:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Build the image
|
||||||
|
docker build -t go-bot:latest .
|
||||||
|
|
||||||
|
# Run the container (Map port 9090 and persist the database/cache)
|
||||||
|
docker run -d \
|
||||||
|
--name whatsapp-bot \
|
||||||
|
-p 9090:9090 \
|
||||||
|
-e OPENROUTER_API_KEY=your_key \
|
||||||
|
-e WHATSAPP_PHONE_ID=your_id \
|
||||||
|
-e WHATSAPP_TOKEN=your_token \
|
||||||
|
-v $(pwd)/whatsapp-bot/data:/root/data:Z \
|
||||||
|
--restart unless-stopped \
|
||||||
|
go-bot:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
Or use this stack:
|
||||||
|
```yml
|
||||||
|
services:
|
||||||
|
bot:
|
||||||
|
image: go-bot:latest
|
||||||
|
container_name: whatsapp-bot
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- OPENROUTER_API_KEY=your_api_key_here
|
||||||
|
- WHATSAPP_PHONE_ID=your_phone_id_here
|
||||||
|
- WHATSAPP_TOKEN=your_token_here
|
||||||
|
volumes:
|
||||||
|
# Map host data folder to the app's data path
|
||||||
|
# The :Z is required for SELinux (Fedora/RHEL)
|
||||||
|
- YOUR_PATH/whatsapp-bot/data:/root/data:Z
|
||||||
|
ports:
|
||||||
|
- "8080:9090"
|
||||||
|
```
|
||||||
|
|||||||
2
db/db.go
2
db/db.go
@@ -10,7 +10,7 @@ var Conn *sql.DB
|
|||||||
|
|
||||||
func Init() {
|
func Init() {
|
||||||
var err error
|
var err error
|
||||||
Conn, err = sql.Open("sqlite", "./bot.db")
|
Conn, err = sql.Open("sqlite", "./data/bot.db")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|||||||
2
go.mod
2
go.mod
@@ -4,6 +4,7 @@ go 1.25.0
|
|||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/gin-gonic/gin v1.12.0
|
github.com/gin-gonic/gin v1.12.0
|
||||||
|
github.com/joho/godotenv v1.5.1
|
||||||
modernc.org/sqlite v1.46.1
|
modernc.org/sqlite v1.46.1
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -21,7 +22,6 @@ require (
|
|||||||
github.com/goccy/go-json v0.10.5 // indirect
|
github.com/goccy/go-json v0.10.5 // indirect
|
||||||
github.com/goccy/go-yaml v1.19.2 // indirect
|
github.com/goccy/go-yaml v1.19.2 // indirect
|
||||||
github.com/google/uuid v1.6.0 // indirect
|
github.com/google/uuid v1.6.0 // indirect
|
||||||
github.com/joho/godotenv v1.5.1 // indirect
|
|
||||||
github.com/json-iterator/go v1.1.12 // indirect
|
github.com/json-iterator/go v1.1.12 // indirect
|
||||||
github.com/klauspost/cpuid/v2 v2.3.0 // indirect
|
github.com/klauspost/cpuid/v2 v2.3.0 // indirect
|
||||||
github.com/leodido/go-urn v1.4.0 // indirect
|
github.com/leodido/go-urn v1.4.0 // indirect
|
||||||
|
|||||||
Reference in New Issue
Block a user