feat: geolocate anonymous widget visitors
Build and publish Docker images / Build and publish images (push) Successful in 2m10s

This commit is contained in:
2026-09-15 08:54:13 +08:00
parent 5a0e9ecada
commit 4d684a71eb
28 changed files with 1502 additions and 104 deletions
+4
View File
@@ -20,6 +20,10 @@ REDIS_PASSWORD=
# GoChat runtime
GOCHAT_ENV=development
GOCHAT_SERVER_MODE=debug
# Optional local MaxMind-compatible City database. Leave empty for anonymous fallback.
GOCHAT_GEOIP_DB_PATH=
# Host path relative to deploy/quickstart when GOCHAT_GEOIP_DB_PATH is set.
GOCHAT_GEOIP_DB_FILE=../../.secrets/GeoLite2-City.mmdb
GOCHAT_JWT_SECRET=gochat_quickstart_change_me_minimum_32_chars
# Optional Captain/Copilot runtime provider. Secrets stay in this ignored .env
+38 -6
View File
@@ -1,5 +1,13 @@
name: gochat-quickstart
x-gochat-geoip: &gochat-geoip
type: bind
source: ${GOCHAT_GEOIP_DB_FILE:-/dev/null}
target: /run/gochat/geoip/GeoLite2-City.mmdb
read_only: true
bind:
create_host_path: false
services:
postgres:
image: pgvector/pgvector:pg16
@@ -34,7 +42,11 @@ services:
volumes:
- redis-data:/data
healthcheck:
test: ["CMD-SHELL", "if [ -n \"$${REDIS_PASSWORD}\" ]; then redis-cli -a \"$${REDIS_PASSWORD}\" ping; else redis-cli ping; fi"]
test:
- CMD-SHELL
- >-
if [ -n "$${REDIS_PASSWORD}" ]; then redis-cli -a
"$${REDIS_PASSWORD}" ping; else redis-cli ping; fi
interval: 5s
timeout: 5s
retries: 20
@@ -51,7 +63,12 @@ services:
volumes:
- meili-data:/meili_data
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--spider", "http://127.0.0.1:7700/health"]
test:
- CMD
- wget
- --no-verbose
- --spider
- http://127.0.0.1:7700/health
interval: 5s
timeout: 5s
retries: 30
@@ -81,7 +98,9 @@ services:
GOCHAT_SERVER_HOST: 0.0.0.0
GOCHAT_SERVER_PORT: 3000
GOCHAT_SERVER_MODE: ${GOCHAT_SERVER_MODE:-debug}
GOCHAT_DATABASE_DSN: postgres://${POSTGRES_USER:-gochat}:${POSTGRES_PASSWORD:-gochat_dev}@postgres:5432/${POSTGRES_DB:-gochat_dev}?sslmode=disable
GOCHAT_DATABASE_DSN: "postgres://${POSTGRES_USER:-gochat}:\
${POSTGRES_PASSWORD:-gochat_dev}@postgres:5432/\
${POSTGRES_DB:-gochat_dev}?sslmode=disable"
GOCHAT_DATABASE_RUN_MIGRATIONS: "true"
GOCHAT_DATABASE_MIGRATIONS_PATH: /app/migrations
GOCHAT_REDIS_DSN: ${REDIS_DSN:-redis://redis:6379}
@@ -89,11 +108,12 @@ services:
GOCHAT_SEARCH_ENGINE: meilisearch
GOCHAT_SEARCH_HOST: http://meilisearch:7700
GOCHAT_SEARCH_API_KEY: ${GOCHAT_SEARCH_API_KEY:-gochat_dev}
GOCHAT_JWT_SECRET: ${GOCHAT_JWT_SECRET:-gochat_quickstart_change_me_minimum_32_chars}
GOCHAT_JWT_SECRET: ${GOCHAT_JWT_SECRET:-gochat_quickstart_secret_32_chars}
GOCHAT_LOG_LEVEL: info
GOCHAT_LOG_FORMAT: json
GOCHAT_STORAGE_PROVIDER: local
GOCHAT_STORAGE_LOCAL_PATH: /app/storage/uploads
GOCHAT_GEOIP_DB_PATH: ${GOCHAT_GEOIP_DB_PATH:-}
GOCHAT_COPILOT_PROVIDER_CONFIG: ${GOCHAT_COPILOT_PROVIDER_CONFIG:-}
GOCHAT_COPILOT_CHAT_API_KEY: ${GOCHAT_COPILOT_CHAT_API_KEY:-}
GOCHAT_COPILOT_EMBEDDING_API_KEY: ${GOCHAT_COPILOT_EMBEDDING_API_KEY:-}
@@ -103,6 +123,7 @@ services:
- "127.0.0.1:${GOCHAT_PORT:-3000}:3000"
volumes:
- gochat-storage:/app/storage
- *gochat-geoip
healthcheck:
test: ["CMD", "curl", "-fsS", "http://127.0.0.1:3000/ready"]
interval: 10s
@@ -129,6 +150,7 @@ services:
GOCHAT_DATABASE_RUN_MIGRATIONS: "false"
volumes:
- gochat-storage:/app/storage
- *gochat-geoip
command: ["worker"]
healthcheck:
disable: true
@@ -147,7 +169,9 @@ services:
GOCHAT_SEED_ADMIN_PASSWORD: ${GOCHAT_SEED_ADMIN_PASSWORD:-changeme}
GOCHAT_SEED_ADMIN_NAME: ${GOCHAT_SEED_ADMIN_NAME:-Super Admin}
GOCHAT_SEED_ACCOUNT_NAME: ${GOCHAT_SEED_ACCOUNT_NAME:-Quickstart Account}
GOCHAT_SEED_INBOX_NAME: ${GOCHAT_SEED_INBOX_NAME:-Quickstart Website Inbox}
GOCHAT_SEED_INBOX_NAME: >-
${GOCHAT_SEED_INBOX_NAME:-Quickstart Website
Inbox}
volumes:
- gochat-storage:/app/storage
command: ["seed"]
@@ -173,7 +197,15 @@ services:
- shangwutong-data:/data
- shangwutong-backups:/backup
healthcheck:
test: ["CMD", "wget", "-q", "-T", "3", "-O", "/dev/null", "http://127.0.0.1:9100/readyz"]
test:
- CMD
- wget
- -q
- -T
- "3"
- -O
- /dev/null
- http://127.0.0.1:9100/readyz
interval: 10s
timeout: 5s
retries: 30