/opt/vitrin-clinic
NameSizeModeActions
.env37250600editdlrm
docker-compose.yml25910644editdlrm
Edit: /opt/vitrin-clinic/docker-compose.yml (2591B)
name: vitrin-clinic # Test deployment running ALONGSIDE other production projects on the droplet. # Strictly additive: no ports 80/443, everything bound to 127.0.0.1 on high # ports — the droplet's existing reverse proxy terminates TLS for the test # subdomains and proxies to these loopback ports. services: postgres: image: postgres:17-alpine container_name: vitrin_db restart: unless-stopped environment: POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_DB: ${POSTGRES_DB} volumes: - postgres_data:/var/lib/postgresql/data # Not exposed at all — only reachable from the other containers. healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"] interval: 10s timeout: 5s retries: 5 be: image: vitrin-clinic-be:latest container_name: vitrin_be restart: unless-stopped environment: DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}?schema=public PORT: 4000 NODE_ENV: production FRONTEND_URL: ${FRONTEND_URL} JWT_SECRET: ${JWT_SECRET} REVALIDATION_SECRET: ${REVALIDATION_SECRET} STORAGE_PROVIDER: ${STORAGE_PROVIDER} R2_ENDPOINT: ${R2_ENDPOINT} R2_BUCKET: ${R2_BUCKET} R2_PUBLIC_URL: ${R2_PUBLIC_URL} R2_ACCESS_KEY: ${R2_ACCESS_KEY} R2_SECRET_KEY: ${R2_SECRET_KEY} ISBANK_MERCHANT_ID: ${ISBANK_MERCHANT_ID} ISBANK_SECRET_KEY: ${ISBANK_SECRET_KEY} ISBANK_API_URL: ${ISBANK_API_URL} ADMIN_SEED_EMAIL: ${ADMIN_SEED_EMAIL} ADMIN_SEED_PASSWORD: ${ADMIN_SEED_PASSWORD} ADMIN_SEED_NAME: ${ADMIN_SEED_NAME} GA4_PROPERTY_ID: ${GA4_PROPERTY_ID} GOOGLE_SERVICE_ACCOUNT_JSON: ${GOOGLE_SERVICE_ACCOUNT_JSON} ports: - "127.0.0.1:${BE_HOST_PORT:-4100}:4000" depends_on: postgres: condition: service_healthy fe: image: vitrin-clinic-fe:latest container_name: vitrin_fe restart: unless-stopped environment: # Server-side code reads this at runtime; client bundles have it baked # in at image build time (see deploy.sh build args). Keep them in sync. NEXT_PUBLIC_API_URL: ${NEXT_PUBLIC_API_URL} NEXT_PUBLIC_R2_PUBLIC_BASE_URL: ${NEXT_PUBLIC_R2_PUBLIC_BASE_URL} REVALIDATION_SECRET: ${REVALIDATION_SECRET} ZOHO_API_KEY: ${ZOHO_API_KEY} TURNSTILE_SECRET_KEY: ${TURNSTILE_SECRET_KEY} ports: - "127.0.0.1:${FE_HOST_PORT:-3100}:3000" depends_on: - be volumes: postgres_data: