Build and publish Docker images / Build and publish images (push) Successful in 2m10s
220 lines
6.2 KiB
YAML
220 lines
6.2 KiB
YAML
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
|
|
restart: unless-stopped
|
|
environment:
|
|
POSTGRES_DB: ${POSTGRES_DB:-gochat_dev}
|
|
POSTGRES_USER: ${POSTGRES_USER:-gochat}
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-gochat_dev}
|
|
ports:
|
|
- "127.0.0.1:${POSTGRES_PORT:-5432}:5432"
|
|
volumes:
|
|
- postgres-data:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 20
|
|
|
|
redis:
|
|
image: redis:7-alpine
|
|
restart: unless-stopped
|
|
command: >-
|
|
sh -c 'if [ -n "$${REDIS_PASSWORD}" ]; then
|
|
exec redis-server --appendonly yes --requirepass "$${REDIS_PASSWORD}";
|
|
else
|
|
exec redis-server --appendonly yes;
|
|
fi'
|
|
environment:
|
|
REDIS_PASSWORD: ${REDIS_PASSWORD:-}
|
|
ports:
|
|
- "127.0.0.1:${REDIS_PORT:-6379}:6379"
|
|
volumes:
|
|
- redis-data:/data
|
|
healthcheck:
|
|
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
|
|
|
|
meilisearch:
|
|
image: getmeili/meilisearch:v1.13
|
|
restart: unless-stopped
|
|
environment:
|
|
MEILI_ENV: development
|
|
MEILI_MASTER_KEY: ${MEILI_MASTER_KEY:-gochat_dev}
|
|
MEILI_NO_ANALYTICS: "true"
|
|
ports:
|
|
- "127.0.0.1:${MEILI_PORT:-7700}:7700"
|
|
volumes:
|
|
- meili-data:/meili_data
|
|
healthcheck:
|
|
test:
|
|
- CMD
|
|
- wget
|
|
- --no-verbose
|
|
- --spider
|
|
- http://127.0.0.1:7700/health
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 30
|
|
|
|
mailhog:
|
|
image: mailhog/mailhog:v1.0.1
|
|
restart: unless-stopped
|
|
ports:
|
|
- "127.0.0.1:${MAILHOG_SMTP_PORT:-1025}:1025"
|
|
- "127.0.0.1:${MAILHOG_WEB_PORT:-8025}:8025"
|
|
|
|
gochat:
|
|
build:
|
|
context: ../..
|
|
dockerfile: deploy/docker/Dockerfile
|
|
restart: unless-stopped
|
|
stop_grace_period: ${GOCHAT_STOP_GRACE_PERIOD:-35s}
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
meilisearch:
|
|
condition: service_healthy
|
|
environment: &gochat-env
|
|
GOCHAT_ENV: ${GOCHAT_ENV:-development}
|
|
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_RUN_MIGRATIONS: "true"
|
|
GOCHAT_DATABASE_MIGRATIONS_PATH: /app/migrations
|
|
GOCHAT_REDIS_DSN: ${REDIS_DSN:-redis://redis:6379}
|
|
GOCHAT_REDIS_POOL_SIZE: 50
|
|
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_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:-}
|
|
SMTP_HOST: mailhog
|
|
SMTP_PORT: 1025
|
|
ports:
|
|
- "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
|
|
timeout: 5s
|
|
retries: 30
|
|
|
|
worker:
|
|
build:
|
|
context: ../..
|
|
dockerfile: deploy/docker/Dockerfile
|
|
restart: unless-stopped
|
|
stop_grace_period: ${GOCHAT_STOP_GRACE_PERIOD:-35s}
|
|
depends_on:
|
|
gochat:
|
|
condition: service_healthy
|
|
postgres:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
meilisearch:
|
|
condition: service_healthy
|
|
environment:
|
|
<<: *gochat-env
|
|
GOCHAT_DATABASE_RUN_MIGRATIONS: "false"
|
|
volumes:
|
|
- gochat-storage:/app/storage
|
|
- *gochat-geoip
|
|
command: ["worker"]
|
|
healthcheck:
|
|
disable: true
|
|
|
|
seed:
|
|
build:
|
|
context: ../..
|
|
dockerfile: deploy/docker/Dockerfile
|
|
profiles: ["seed"]
|
|
depends_on:
|
|
gochat:
|
|
condition: service_healthy
|
|
environment:
|
|
<<: *gochat-env
|
|
GOCHAT_SEED_ADMIN_EMAIL: ${GOCHAT_SEED_ADMIN_EMAIL:-admin@gochat.local}
|
|
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}
|
|
volumes:
|
|
- gochat-storage:/app/storage
|
|
command: ["seed"]
|
|
restart: "no"
|
|
|
|
shangwutong:
|
|
profiles: ["shangwutong"]
|
|
build:
|
|
context: ../..
|
|
dockerfile: channels/shangwutong/Dockerfile
|
|
restart: unless-stopped
|
|
stop_grace_period: ${SWT_SHUTDOWN_TIMEOUT:-30s}
|
|
environment:
|
|
SWT_CONNECTOR_LISTEN: :9100
|
|
SWT_CONNECTOR_DB_PATH: /data/connector.db
|
|
GOCHAT_BASE_URL: http://gochat:3000
|
|
GOCHAT_CONNECTOR_SERVICE_TOKEN: ${GOCHAT_CONNECTOR_SERVICE_TOKEN:-}
|
|
SWT_MAX_INFLIGHT_HEARTBEATS: ${SWT_MAX_INFLIGHT_HEARTBEATS:-64}
|
|
SWT_INBOUND_WORKERS: ${SWT_INBOUND_WORKERS:-8}
|
|
SWT_OUTBOUND_WORKERS: ${SWT_OUTBOUND_WORKERS:-8}
|
|
SWT_SHUTDOWN_TIMEOUT: ${SWT_SHUTDOWN_TIMEOUT:-30s}
|
|
volumes:
|
|
- shangwutong-data:/data
|
|
- shangwutong-backups:/backup
|
|
healthcheck:
|
|
test:
|
|
- CMD
|
|
- wget
|
|
- -q
|
|
- -T
|
|
- "3"
|
|
- -O
|
|
- /dev/null
|
|
- http://127.0.0.1:9100/readyz
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 30
|
|
|
|
volumes:
|
|
postgres-data:
|
|
redis-data:
|
|
meili-data:
|
|
gochat-storage:
|
|
shangwutong-data:
|
|
shangwutong-backups:
|