You've already forked grok
dockerize application
This commit is contained in:
10
Dockerfile
Normal file
10
Dockerfile
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
FROM golang:latest AS builder
|
||||||
|
WORKDIR /app
|
||||||
|
COPY go.mod go.sum ./
|
||||||
|
RUN go mod download
|
||||||
|
COPY *.go ./
|
||||||
|
RUN CGO_ENABLED=0 GOOS=linux go build -o /grok-bot
|
||||||
|
|
||||||
|
FROM alpine:latest
|
||||||
|
COPY --from=builder /grok-bot /grok-bot
|
||||||
|
CMD ["/grok-bot"]
|
||||||
28
docker-compose.yml
Normal file
28
docker-compose.yml
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
services:
|
||||||
|
bot:
|
||||||
|
build: .
|
||||||
|
environment:
|
||||||
|
BOT_TOKEN: ""
|
||||||
|
CHAT_ID: ""
|
||||||
|
OPENAI_BASE_URL: "http://localhost:8080/v1"
|
||||||
|
SYSTEM_PROMPT_PATH: /etc/sysprompt.txt
|
||||||
|
volumes:
|
||||||
|
- ./sysprompt.txt:/etc/sysprompt.txt:ro
|
||||||
|
restart: unless-stopped
|
||||||
|
llama-server:
|
||||||
|
image: ghcr.io/ggml-org/llama.cpp:server
|
||||||
|
container_name: llama-server
|
||||||
|
ports:
|
||||||
|
- "8080:8080"
|
||||||
|
volumes:
|
||||||
|
- ~/models:/models
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
memory: 2g
|
||||||
|
memswap_limit: 6g
|
||||||
|
command: >
|
||||||
|
-m /models/qwen25_15B.gguf
|
||||||
|
--port 8080
|
||||||
|
--host 0.0.0.0
|
||||||
|
-n 512
|
||||||
10
main.go
10
main.go
@@ -170,7 +170,7 @@ type Config struct {
|
|||||||
|
|
||||||
func LoadConfig(cfg *Config) error {
|
func LoadConfig(cfg *Config) error {
|
||||||
if err := godotenv.Load(".env"); err != nil {
|
if err := godotenv.Load(".env"); err != nil {
|
||||||
return err
|
slog.Warn("no env file loaded", "err", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
cfg.OpenAIBaseURL = os.Getenv("OPENAI_BASE_URL")
|
cfg.OpenAIBaseURL = os.Getenv("OPENAI_BASE_URL")
|
||||||
@@ -197,7 +197,13 @@ func LoadConfig(cfg *Config) error {
|
|||||||
|
|
||||||
cfg.ChatID = chatID
|
cfg.ChatID = chatID
|
||||||
|
|
||||||
cfg.SystemPrompt = os.Getenv("SYSTEM_PROMPT")
|
sysPromptPath := os.Getenv("SYSTEM_PROMPT_PATH")
|
||||||
|
promptBytes, err := os.ReadFile(sysPromptPath)
|
||||||
|
if err != nil {
|
||||||
|
slog.Warn("could not load system prompt", "path", sysPromptPath)
|
||||||
|
} else {
|
||||||
|
cfg.SystemPrompt = string(promptBytes)
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
1
sysprompt.txt
Normal file
1
sysprompt.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
Put system prompt here
|
||||||
Reference in New Issue
Block a user