name: gochat-quickstart 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 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_HOST: postgres GOCHAT_DATABASE_PORT: 5432 GOCHAT_DATABASE_USER: ${POSTGRES_USER:-gochat} GOCHAT_DATABASE_PASSWORD: ${POSTGRES_PASSWORD:-gochat_dev} GOCHAT_DATABASE_DBNAME: ${POSTGRES_DB:-gochat_dev} GOCHAT_DATABASE_SSLMODE: disable GOCHAT_DATABASE_RUN_MIGRATIONS: "true" GOCHAT_DATABASE_MIGRATIONS_PATH: /app/migrations GOCHAT_REDIS_HOST: redis GOCHAT_REDIS_PORT: 6379 GOCHAT_REDIS_PASSWORD: ${REDIS_PASSWORD:-} 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_change_me_minimum_32_chars} GOCHAT_LOG_LEVEL: info GOCHAT_LOG_FORMAT: json GOCHAT_CAPTAIN_ENABLED: ${GOCHAT_CAPTAIN_ENABLED:-false} GOCHAT_STORAGE_PROVIDER: local GOCHAT_STORAGE_LOCAL_PATH: /app/storage/uploads SMTP_HOST: mailhog SMTP_PORT: 1025 ports: - "127.0.0.1:${GOCHAT_PORT:-3000}:3000" volumes: - gochat-storage:/app/storage healthcheck: test: ["CMD", "curl", "-fsS", "http://127.0.0.1:3000/health"] interval: 10s timeout: 5s retries: 30 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" volumes: postgres-data: redis-data: meili-data: gochat-storage: