services: postgres: image: postgres:16-alpine container_name: tinovisas-postgres environment: POSTGRES_DB: tinovisas POSTGRES_USER: tinovisas POSTGRES_PASSWORD: tinovisas_secret_2024 volumes: - postgres_data:/var/lib/postgresql/data - ./postgres-init:/docker-entrypoint-initdb.d ports: - "127.0.0.1:5432:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U tinovisas -d tinovisas"] interval: 5s timeout: 5s retries: 5 networks: - tinovisas-network redis: image: redis:7-alpine container_name: tinovisas-redis volumes: - redis_data:/data ports: - "127.0.0.1:6379:6379" healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 5s retries: 5 networks: - tinovisas-network backend: build: ./backend container_name: tinovisas-backend environment: NODE_ENV: production PORT: 4000 DB_HOST: postgres DB_PORT: 5432 DB_NAME: tinovisas DB_USER: tinovisas DB_PASSWORD: tinovisas_secret_2024 REDIS_HOST: redis REDIS_PORT: 6379 JWT_SECRET: tinovisas_super_secret_key_change_me JWT_EXPIRES_IN: 24h ENCRYPTION_KEY: tinovisas_encryption_key_32chars!! UPLOAD_DIR: /app/uploads MAX_FILE_SIZE: 10485760 PLAYWRIGHT_HEADLESS: "true" PLAYWRIGHT_TIMEOUT: 30000 DEFAULT_ADMIN_EMAIL: admin@tinovisas.com DEFAULT_ADMIN_PASSWORD: Admin123! volumes: - uploads_data:/app/uploads depends_on: postgres: condition: service_healthy redis: condition: service_healthy networks: - tinovisas-network frontend: build: ./frontend container_name: tinovisas-frontend depends_on: - backend networks: - tinovisas-network nginx: image: nginx:alpine container_name: tinovisas-nginx volumes: - ./nginx/nginx.conf:/etc/nginx/nginx.conf - uploads_data:/app/uploads - ./nginx/html:/etc/nginx/html - ./screenshots:/app/tinovisas/screenshots depends_on: - frontend - backend networks: - tinovisas-network - coolify restart: unless-stopped volumes: postgres_data: redis_data: uploads_data: networks: tinovisas-network: driver: bridge coolify: external: true