131 lines
3.9 KiB
YAML
131 lines
3.9 KiB
YAML
networks:
|
|
1panel-network:
|
|
external: true
|
|
glean-network:
|
|
driver: bridge
|
|
|
|
services:
|
|
postgres:
|
|
image: postgres:16-alpine
|
|
container_name: ${CONTAINER_NAME}-postgres
|
|
restart: always
|
|
volumes:
|
|
- ${GLEAN_ROOT_PATH}/postgres:/var/lib/postgresql/data
|
|
networks:
|
|
- glean-network
|
|
env_file:
|
|
- ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
|
|
- ${ENV_FILE:-/etc/1panel/envs/default.env}
|
|
healthcheck:
|
|
test: [ "CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-glean}" ]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
environment:
|
|
POSTGRES_DB: ${POSTGRES_DB:-glean}
|
|
POSTGRES_USER: ${POSTGRES_USER:-glean}
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-glean}
|
|
|
|
redis:
|
|
image: redis:7-alpine
|
|
container_name: ${CONTAINER_NAME}-redis
|
|
command: redis-server --appendonly yes
|
|
restart: always
|
|
volumes:
|
|
- ${GLEAN_ROOT_PATH}/redis:/data
|
|
networks:
|
|
- glean-network
|
|
env_file:
|
|
- ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
|
|
- ${ENV_FILE:-/etc/1panel/envs/default.env}
|
|
healthcheck:
|
|
test: [ "CMD", "redis-cli", "ping" ]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
backend:
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
image: ghcr.io/leslieleung/glean-backend:0.1.4
|
|
container_name: ${CONTAINER_NAME}
|
|
labels:
|
|
createdBy: "Apps"
|
|
environment:
|
|
DATABASE_URL: postgresql+asyncpg://${POSTGRES_USER:-glean}:${POSTGRES_PASSWORD:-glean}@postgres:5432/${POSTGRES_DB:-glean}
|
|
REDIS_URL: redis://redis:6379/0
|
|
SECRET_KEY: ${SECRET_KEY:-change-me-in-production-use-a-long-random-string}
|
|
CORS_ORIGINS: '["http://localhost", "http://localhost:3000", "http://localhost:3001"]'
|
|
DEBUG: ${DEBUG:-false}
|
|
RUN_MIGRATIONS: "true"
|
|
CREATE_ADMIN: ${CREATE_ADMIN:-true}
|
|
ADMIN_USERNAME: ${ADMIN_USERNAME:-admin}
|
|
ADMIN_PASSWORD: ${ADMIN_PASSWORD:-}
|
|
ADMIN_ROLE: ${ADMIN_ROLE:-super_admin}
|
|
restart: always
|
|
healthcheck:
|
|
test: [ "CMD", "curl", "-f", "http://localhost:8000/api/health" ]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
start_period: 30s
|
|
networks:
|
|
- glean-network
|
|
env_file:
|
|
- ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
|
|
- ${ENV_FILE:-/etc/1panel/envs/default.env}
|
|
command: [ "uv", "run", "--no-sync", "uvicorn", "glean_api.main:app", "--host", "0.0.0.0", "--port", "8000" ]
|
|
|
|
worker:
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
backend:
|
|
condition: service_healthy
|
|
image: ghcr.io/leslieleung/glean-backend:0.1.4
|
|
container_name: ${CONTAINER_NAME}-worker
|
|
environment:
|
|
DATABASE_URL: postgresql+asyncpg://${POSTGRES_USER:-glean}:${POSTGRES_PASSWORD:-glean}@postgres:5432/${POSTGRES_DB:-glean}
|
|
REDIS_URL: redis://redis:6379/0
|
|
SECRET_KEY: ${SECRET_KEY:-}
|
|
networks:
|
|
- glean-network
|
|
env_file:
|
|
- ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
|
|
- ${ENV_FILE:-/etc/1panel/envs/default.env}
|
|
restart: always
|
|
command: [ "uv", "run", "--no-sync", "arq", "glean_worker.main.WorkerSettings" ]
|
|
|
|
web:
|
|
depends_on:
|
|
- backend
|
|
image: ghcr.io/leslieleung/glean-web:0.1.4
|
|
container_name: ${CONTAINER_NAME}-web
|
|
ports:
|
|
- "${PANEL_APP_PORT_HTTP:-80}:80"
|
|
networks:
|
|
- glean-network
|
|
restart: always
|
|
env_file:
|
|
- ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
|
|
- ${ENV_FILE:-/etc/1panel/envs/default.env}
|
|
|
|
admin:
|
|
depends_on:
|
|
- backend
|
|
image: ghcr.io/leslieleung/glean-admin:0.1.4
|
|
container_name: ${CONTAINER_NAME}-admin
|
|
ports:
|
|
- "${PANEL_APP_PORT_ADMIN:-3001}:80"
|
|
networks:
|
|
- glean-network
|
|
restart: always
|
|
env_file:
|
|
- ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
|
|
- ${ENV_FILE:-/etc/1panel/envs/default.env}
|