docker-compose.prod.yml
Rama main · réplica de lectura del repositorio original.
services:
db:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- pgdata:/var/lib/postgresql/data
ports:
- "5432:5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
interval: 5s
timeout: 5s
retries: 5
networks:
- internal
minio:
image: minio/minio:latest
restart: unless-stopped
command: server /data --console-address ":9001"
environment:
MINIO_ROOT_USER: ${S3_ACCESS_KEY_ID:-minioadmin}
MINIO_ROOT_PASSWORD: ${S3_SECRET_ACCESS_KEY:-minioadmin}
ports:
- "127.0.0.1:9001:9001"
- "127.0.0.1:9000:9000"
volumes:
- minio_data:/data
healthcheck:
test: ["CMD", "mc", "ready", "local"]
interval: 5s
timeout: 5s
retries: 5
networks:
- internal
redis:
image: redis:7-alpine
restart: unless-stopped
volumes:
- redis_data:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 5s
retries: 5
networks:
- internal
core:
image: ghcr.io/vladosuscocosus/odi-core:${IMAGE_TAG:-latest}
build:
context: .
dockerfile: docker/Dockerfile.core
restart: unless-stopped
ports:
- "127.0.0.1:3000:3000"
environment:
POSTGRES_HOST: db
POSTGRES_PORT: 5432
NODE_ENV: ${NODE_ENV}
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
GOOGLE_CLIENT_ID: ${GOOGLE_CLIENT_ID}
GOOGLE_CLIENT_SECRET: ${GOOGLE_CLIENT_SECRET}
GOOGLE_REDIRECT_URI: ${GOOGLE_REDIRECT_URI}
FRONTEND_URL: ${FRONTEND_URL}
SITE_URL: ${SITE_URL:-https://odinvestor.net}
SESSION_MAX_AGE: ${SESSION_MAX_AGE:-2592000}
DATABASE_URL: postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}
REDIS_URL: redis://redis:6379
EXCHANGE_ENCRYPTION_KEY: ${EXCHANGE_ENCRYPTION_KEY}
ADMIN_EMAIL: ${ADMIN_EMAIL}
MAILGUN_API_KEY: ${MAILGUN_API_KEY}
MAILGUN_DOMAIN: ${MAILGUN_DOMAIN}
MAILGUN_FROM: ${MAILGUN_FROM}
S3_ENDPOINT: http://minio:9000
S3_REGION: ${S3_REGION:-eu-central-1}
S3_ACCESS_KEY_ID: ${S3_ACCESS_KEY_ID:-minioadmin}
S3_SECRET_ACCESS_KEY: ${S3_SECRET_ACCESS_KEY:-minioadmin}
S3_BUCKET: ${S3_BUCKET:-blog-images}
S3_PUBLIC_URL: ${S3_PUBLIC_URL}
MARKET_URL: http://market:3002
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
minio:
condition: service_healthy
networks:
- internal
analytics:
image: ghcr.io/vladosuscocosus/odi-analytics:${IMAGE_TAG:-latest}
build:
context: .
dockerfile: docker/Dockerfile.analytics
restart: unless-stopped
ports:
- "127.0.0.1:3001:3001"
environment:
POSTGRES_HOST: db
POSTGRES_PORT: 5432
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
FRONTEND_URL: ${FRONTEND_URL}
SITE_URL: ${SITE_URL:-https://odinvestor.net}
depends_on:
db:
condition: service_healthy
networks:
- internal
market:
image: ghcr.io/vladosuscocosus/odi-market:${IMAGE_TAG:-latest}
build:
context: .
dockerfile: docker/Dockerfile.market
restart: unless-stopped
ports:
- "127.0.0.1:3002:3002"
environment:
POSTGRES_HOST: db
POSTGRES_PORT: 5432
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
FRONTEND_URL: ${FRONTEND_URL}
SITE_URL: ${SITE_URL:-https://odinvestor.net}
REDIS_URL: redis://redis:6379
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
networks:
- internal
reminder:
image: ghcr.io/vladosuscocosus/odi-reminder:${IMAGE_TAG:-latest}
build:
context: .
dockerfile: docker/Dockerfile.reminder
restart: unless-stopped
environment:
POSTGRES_HOST: db
POSTGRES_PORT: 5432
NODE_ENV: ${NODE_ENV}
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
FRONTEND_URL: ${FRONTEND_URL}
MAILGUN_API_KEY: ${MAILGUN_API_KEY}
MAILGUN_DOMAIN: ${MAILGUN_DOMAIN}
MAILGUN_FROM: ${MAILGUN_FROM}
depends_on:
db:
condition: service_healthy
networks:
- internal
blog:
image: ghcr.io/vladosuscocosus/odi-blog:${IMAGE_TAG:-latest}
build:
context: .
dockerfile: docker/Dockerfile.blog
restart: unless-stopped
ports:
- "127.0.0.1:3003:3003"
environment:
POSTGRES_HOST: db
POSTGRES_PORT: 5432
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
BLOG_POSTGRES_DB: ${BLOG_POSTGRES_DB:-blog}
S3_ENDPOINT: http://minio:9000
S3_REGION: ${S3_REGION:-eu-central-1}
S3_ACCESS_KEY_ID: ${S3_ACCESS_KEY_ID:-minioadmin}
S3_SECRET_ACCESS_KEY: ${S3_SECRET_ACCESS_KEY:-minioadmin}
S3_BUCKET: ${S3_BUCKET:-blog-images}
S3_PUBLIC_URL: ${S3_PUBLIC_URL}
OG_SERVICE_URL: http://og:3004
FRONTEND_URL: ${FRONTEND_URL:-https://odinvestor.net}
depends_on:
db:
condition: service_healthy
minio:
condition: service_healthy
networks:
- internal
og:
image: ghcr.io/vladosuscocosus/odi-og:${IMAGE_TAG:-latest}
build:
context: .
dockerfile: docker/Dockerfile.og
restart: unless-stopped
environment:
S3_ENDPOINT: http://minio:9000
S3_REGION: ${S3_REGION:-eu-central-1}
S3_ACCESS_KEY_ID: ${S3_ACCESS_KEY_ID:-minioadmin}
S3_SECRET_ACCESS_KEY: ${S3_SECRET_ACCESS_KEY:-minioadmin}
S3_BUCKET: ${S3_BUCKET:-blog-images}
depends_on:
minio:
condition: service_healthy
networks:
- internal
site:
image: ghcr.io/vladosuscocosus/odi-site:${IMAGE_TAG:-latest}
build:
context: .
dockerfile: docker/Dockerfile.site
restart: unless-stopped
ports:
- "127.0.0.1:3005:3005"
environment:
POSTGRES_HOST: db
POSTGRES_PORT: 5432
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
SITE_URL: ${SITE_URL:-https://odinvestor.net}
DASHBOARD_URL: ${DASHBOARD_URL:-https://dashboard.odinvestor.net}
BLOG_URL: ${BLOG_URL:-https://blog.odinvestor.net}
FRONTEND_URL: ${FRONTEND_URL:-https://dashboard.odinvestor.net}
CORE_URL: ${CORE_URL:-https://core.odinvestor.net}
MARKET_URL: ${MARKET_URL:-https://market.odinvestor.net}
ANALYTICS_URL: ${ANALYTICS_URL:-https://analytics.odinvestor.net}
depends_on:
db:
condition: service_healthy
networks:
- internal
frontend:
image: ghcr.io/vladosuscocosus/odi-frontend:${IMAGE_TAG:-latest}
build:
context: .
dockerfile: docker/Dockerfile.frontend
args:
VITE_API_URL: ${VITE_API_URL}
VITE_ANALYTICS_URL: ${VITE_ANALYTICS_URL}
VITE_MARKET_URL: ${VITE_MARKET_URL}
VITE_BLOG_URL: ${VITE_BLOG_URL:-https://blog.odinvestor.net}
VITE_S3_PUBLIC_URL: ${S3_PUBLIC_URL}
restart: unless-stopped
ports:
- "127.0.0.1:8080:8080"
networks:
- internal
volumes:
pgdata:
minio_data:
redis_data:
networks:
internal: