From 4f00ebd9ac9931dbc178eb8c3d2b15cd4f827af6 Mon Sep 17 00:00:00 2001 From: cawcenter Date: Fri, 12 Dec 2025 08:47:01 -0500 Subject: [PATCH] Fix: Simplified docker-compose for Coolify with build from GitHub --- directus.Dockerfile | 12 +++ docker-compose.yaml | 173 +++++++++++++++++++------------------------- 2 files changed, 85 insertions(+), 100 deletions(-) create mode 100644 directus.Dockerfile diff --git a/directus.Dockerfile b/directus.Dockerfile new file mode 100644 index 0000000..f898170 --- /dev/null +++ b/directus.Dockerfile @@ -0,0 +1,12 @@ +FROM directus/directus:11 + +USER root + +# Copy scripts and templates +COPY --chown=node:node ./directus/scripts /directus/scripts +COPY --chown=node:node ./directus/template /directus/template +COPY --chown=node:node ./directus/extensions /directus/extensions + +USER node + +WORKDIR /directus diff --git a/docker-compose.yaml b/docker-compose.yaml index 32831cd..7e44503 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,115 +1,88 @@ -version: '3.8' - services: - # ========================================== - # DIRECTUS (Headless CMS) - # ========================================== directus: build: - context: ./directus - dockerfile: Dockerfile - container_name: spark-directus - restart: unless-stopped - ports: - - "8055:8055" - environment: - SECRET: ${DIRECTUS_SECRET:-super-secret-key-change-in-production} - ADMIN_EMAIL: ${DIRECTUS_ADMIN_EMAIL:-admin@spark.local} - ADMIN_PASSWORD: ${DIRECTUS_ADMIN_PASSWORD:-admin} - DB_CLIENT: pg - DB_HOST: postgres - DB_PORT: 5432 - DB_DATABASE: ${POSTGRES_DB:-spark} - DB_USER: ${POSTGRES_USER:-spark} - DB_PASSWORD: ${POSTGRES_PASSWORD:-spark} - CACHE_ENABLED: "true" - CACHE_STORE: redis - REDIS_HOST: redis - REDIS_PORT: 6379 - CORS_ENABLED: "true" - CORS_ORIGIN: "*" - PUBLIC_URL: ${DIRECTUS_PUBLIC_URL:-http://localhost:8055} - STORAGE_LOCATIONS: local - STORAGE_LOCAL_ROOT: /directus/uploads + context: . + dockerfile: directus.Dockerfile volumes: - - directus_uploads:/directus/uploads - - directus_extensions:/directus/extensions + - 'directus-uploads:/directus/uploads' + - 'directus-extensions:/directus/extensions' + - 'directus-templates:/directus/templates' + environment: + - SERVICE_URL_DIRECTUS_8055 + - KEY=$SERVICE_BASE64_64_KEY + - SECRET=$SERVICE_BASE64_64_SECRET + - 'ADMIN_EMAIL=${ADMIN_EMAIL:-admin@example.com}' + - ADMIN_PASSWORD=$SERVICE_PASSWORD_ADMIN + - DB_CLIENT=postgres + - DB_HOST=postgresql + - DB_PORT=5432 + - 'DB_DATABASE=${POSTGRESQL_DATABASE:-directus}' + - DB_USER=$SERVICE_USER_POSTGRESQL + - DB_PASSWORD=$SERVICE_PASSWORD_POSTGRESQL + - REDIS_HOST=redis + - REDIS_PORT=6379 + - WEBSOCKETS_ENABLED=true + healthcheck: + test: + - CMD + - wget + - '-q' + - '--spider' + - 'http://127.0.0.1:8055/admin/login' + interval: 5s + timeout: 20s + retries: 10 depends_on: - - postgres - - redis - networks: - - spark-network + postgresql: + condition: service_healthy + redis: + condition: service_healthy + + postgresql: + image: 'postgis/postgis:16-3.4-alpine' + platform: linux/amd64 + volumes: + - 'directus-postgresql-data:/var/lib/postgresql/data' + environment: + - 'POSTGRES_USER=${SERVICE_USER_POSTGRESQL}' + - 'POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRESQL}' + - 'POSTGRES_DB=${POSTGRESQL_DATABASE:-directus}' + healthcheck: + test: + - CMD-SHELL + - 'pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}' + interval: 5s + timeout: 20s + retries: 10 + + redis: + image: 'redis:7-alpine' + command: 'redis-server --appendonly yes' + volumes: + - 'directus-redis-data:/data' + healthcheck: + test: + - CMD + - redis-cli + - ping + interval: 5s + timeout: 20s + retries: 10 - # ========================================== - # FRONTEND (Astro SSR) - # ========================================== frontend: build: context: ./frontend dockerfile: Dockerfile - container_name: spark-frontend - restart: unless-stopped - ports: - - "4321:4321" environment: - PUBLIC_DIRECTUS_URL: ${DIRECTUS_PUBLIC_URL:-http://directus:8055} - DIRECTUS_ADMIN_TOKEN: ${DIRECTUS_ADMIN_TOKEN:-} - PUBLIC_PLATFORM_DOMAIN: ${PLATFORM_DOMAIN:-localhost} + - PUBLIC_DIRECTUS_URL=http://directus:8055 + - DIRECTUS_ADMIN_TOKEN=${DIRECTUS_ADMIN_TOKEN:-} + - PUBLIC_PLATFORM_DOMAIN=${PLATFORM_DOMAIN:-localhost} depends_on: - directus - networks: - - spark-network - # ========================================== - # POSTGRESQL DATABASE - # ========================================== - postgres: - image: postgres:16-alpine - container_name: spark-postgres - restart: unless-stopped - environment: - POSTGRES_DB: ${POSTGRES_DB:-spark} - POSTGRES_USER: ${POSTGRES_USER:-spark} - POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-spark} - volumes: - - postgres_data:/var/lib/postgresql/data - networks: - - spark-network - healthcheck: - test: [ "CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-spark}" ] - interval: 10s - timeout: 5s - retries: 5 - - # ========================================== - # REDIS CACHE - # ========================================== - redis: - image: redis:7-alpine - container_name: spark-redis - restart: unless-stopped - volumes: - - redis_data:/data - networks: - - spark-network - healthcheck: - test: [ "CMD", "redis-cli", "ping" ] - interval: 10s - timeout: 5s - retries: 5 - -# ========================================== -# VOLUMES -# ========================================== volumes: - postgres_data: - redis_data: - directus_uploads: - directus_extensions: - - # ========================================== - # NETWORKS - # ========================================== -networks: - spark-network: - driver: bridge + directus-uploads: + directus-extensions: + directus-templates: + directus-postgresql-data: + directus-redis-data: