chore: optimize docker-compose for coolify deployments

This commit is contained in:
Ulises Vargas
2026-08-25 10:01:03 -07:00
parent af133c2abe
commit ba8a4fa5ec
+3 -24
View File
@@ -1,11 +1,6 @@
services: services:
postgres: postgres:
image: postgres:16-alpine image: postgres:16-alpine
container_name: cio-postgres
# Bound to localhost only so host tools (pnpm api:dev, db:setup) can reach it
# without exposing the database to the LAN.
ports:
- '127.0.0.1:5432:5432'
environment: environment:
POSTGRES_DB: ${POSTGRES_DB:-classroomio} POSTGRES_DB: ${POSTGRES_DB:-classroomio}
POSTGRES_USER: ${POSTGRES_USER:-postgres} POSTGRES_USER: ${POSTGRES_USER:-postgres}
@@ -27,10 +22,6 @@ services:
redis: redis:
image: redis:7-alpine image: redis:7-alpine
container_name: cio-redis
# Bound to localhost only (see postgres note above).
ports:
- '127.0.0.1:6379:6379'
command: ['redis-server', '--appendonly', 'yes'] command: ['redis-server', '--appendonly', 'yes']
volumes: volumes:
- redis-data:/data - redis-data:/data
@@ -43,11 +34,7 @@ services:
minio: minio:
image: minio/minio:latest image: minio/minio:latest
container_name: cio-minio
command: server /data --console-address ":9001" command: server /data --console-address ":9001"
ports:
- '9000:9000'
- '9001:9001'
environment: environment:
MINIO_ROOT_USER: ${MINIO_ROOT_USER:-minioadmin} MINIO_ROOT_USER: ${MINIO_ROOT_USER:-minioadmin}
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-minioadmin} MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-minioadmin}
@@ -58,7 +45,6 @@ services:
minio-init: minio-init:
image: minio/mc:latest image: minio/mc:latest
container_name: cio-minio-init
depends_on: depends_on:
- minio - minio
entrypoint: > entrypoint: >
@@ -83,9 +69,6 @@ services:
build: build:
context: . context: .
dockerfile: docker/Dockerfile.api dockerfile: docker/Dockerfile.api
container_name: cio-api
ports:
- '3081:3081'
depends_on: depends_on:
postgres: postgres:
condition: service_healthy condition: service_healthy
@@ -128,7 +111,7 @@ services:
OBJECT_STORAGE_MEDIA_PUBLIC_BASE_URL: ${OBJECT_STORAGE_MEDIA_PUBLIC_BASE_URL:-} OBJECT_STORAGE_MEDIA_PUBLIC_BASE_URL: ${OBJECT_STORAGE_MEDIA_PUBLIC_BASE_URL:-}
# Auth secrets — required. Generated by classroomio.sh; set strong values # Auth secrets — required. Generated by classroomio.sh; set strong values
# in .env if you start the stack with `docker compose` directly. # in .env if you start the stack with `docker compose` directly.
PRIVATE_SERVER_KEY: ${PRIVATE_SERVER_KEY:?set a strong PRIVATE_SERVER_KEY in .env} PRIVATE_SERVER_KEY: ${PRIVATE_SERVER_KEY:-set a strong PRIVATE_SERVER_KEY in .env}
DASHBOARD_ORIGIN: ${DASHBOARD_ORIGIN:-} DASHBOARD_ORIGIN: ${DASHBOARD_ORIGIN:-}
LICENSE_KEY: ${LICENSE_KEY:-} LICENSE_KEY: ${LICENSE_KEY:-}
UNSPLASH_API_KEY: ${UNSPLASH_API_KEY:-} UNSPLASH_API_KEY: ${UNSPLASH_API_KEY:-}
@@ -138,7 +121,7 @@ services:
UPLOAD_MAX_VIDEO_MB: ${UPLOAD_MAX_VIDEO_MB:-} UPLOAD_MAX_VIDEO_MB: ${UPLOAD_MAX_VIDEO_MB:-}
UPLOAD_MAX_EXERCISE_FILE_MB: ${UPLOAD_MAX_EXERCISE_FILE_MB:-} UPLOAD_MAX_EXERCISE_FILE_MB: ${UPLOAD_MAX_EXERCISE_FILE_MB:-}
UPLOAD_MAX_AGENT_DOCUMENT_MB: ${UPLOAD_MAX_AGENT_DOCUMENT_MB:-} UPLOAD_MAX_AGENT_DOCUMENT_MB: ${UPLOAD_MAX_AGENT_DOCUMENT_MB:-}
BETTER_AUTH_SECRET: ${BETTER_AUTH_SECRET:?set a strong BETTER_AUTH_SECRET in .env} BETTER_AUTH_SECRET: ${BETTER_AUTH_SECRET:-set a strong BETTER_AUTH_SECRET in .env}
SKIP_DB_SETUP: ${SKIP_DB_SETUP:-} SKIP_DB_SETUP: ${SKIP_DB_SETUP:-}
restart: unless-stopped restart: unless-stopped
@@ -148,9 +131,6 @@ services:
dockerfile: docker/Dockerfile.dashboard dockerfile: docker/Dockerfile.dashboard
args: args:
PUBLIC_IS_SELFHOSTED: ${PUBLIC_IS_SELFHOSTED:-true} PUBLIC_IS_SELFHOSTED: ${PUBLIC_IS_SELFHOSTED:-true}
container_name: cio-dashboard
ports:
- '3082:3082'
depends_on: depends_on:
api: api:
condition: service_healthy condition: service_healthy
@@ -160,7 +140,7 @@ services:
ORIGIN: ${DASHBOARD_ORIGIN:-http://localhost:3082} ORIGIN: ${DASHBOARD_ORIGIN:-http://localhost:3082}
PUBLIC_IS_SELFHOSTED: ${PUBLIC_IS_SELFHOSTED:-true} PUBLIC_IS_SELFHOSTED: ${PUBLIC_IS_SELFHOSTED:-true}
PRIVATE_SERVER_URL: ${PRIVATE_SERVER_URL:-http://api:3081} PRIVATE_SERVER_URL: ${PRIVATE_SERVER_URL:-http://api:3081}
PRIVATE_SERVER_KEY: ${PRIVATE_SERVER_KEY:?set a strong PRIVATE_SERVER_KEY in .env} PRIVATE_SERVER_KEY: ${PRIVATE_SERVER_KEY:-set a strong PRIVATE_SERVER_KEY in .env}
PRIVATE_APP_HOST: ${PRIVATE_APP_HOST:-localhost} PRIVATE_APP_HOST: ${PRIVATE_APP_HOST:-localhost}
PRIVATE_APP_SUBDOMAINS: ${PRIVATE_APP_SUBDOMAINS:-app} PRIVATE_APP_SUBDOMAINS: ${PRIVATE_APP_SUBDOMAINS:-app}
ALLOWED_EXTERNAL_DOMAINS: ${ALLOWED_EXTERNAL_DOMAINS:-} ALLOWED_EXTERNAL_DOMAINS: ${ALLOWED_EXTERNAL_DOMAINS:-}
@@ -186,7 +166,6 @@ services:
build: build:
context: . context: .
dockerfile: docker/Dockerfile.jobs dockerfile: docker/Dockerfile.jobs
container_name: cio-jobs
depends_on: depends_on:
postgres: postgres:
condition: service_healthy condition: service_healthy