-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
98 lines (93 loc) · 3.3 KB
/
docker-compose.yml
File metadata and controls
98 lines (93 loc) · 3.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
version: '3.8'
services:
# PostgreSQL Database
postgres:
image: postgres:16-alpine
container_name: caresync-db
restart: unless-stopped
environment:
POSTGRES_DB: caresync
POSTGRES_USER: ${SPRING_DATASOURCE_USERNAME:-caresync}
POSTGRES_PASSWORD: ${SPRING_DATASOURCE_PASSWORD:-caresync}
ports:
- "5433:5432" # Host port 5433 to avoid conflict with local postgres
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- caresync-network
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${SPRING_DATASOURCE_USERNAME:-caresync}"]
interval: 10s
timeout: 5s
retries: 5
# Spring Boot application
app:
build:
context: .
dockerfile: Dockerfile
container_name: caresync-app
restart: unless-stopped
ports:
- "8080:8080"
environment:
- SPRING_PROFILES_ACTIVE=docker
# Override URL to point to internal postgres service by service name "postgres"
- SPRING_DATASOURCE_URL=jdbc:postgresql://postgres:5432/caresync
- SPRING_DATASOURCE_USERNAME=${SPRING_DATASOURCE_USERNAME:-caresync}
- SPRING_DATASOURCE_PASSWORD=${SPRING_DATASOURCE_PASSWORD:-caresync}
- APP_CORS_ALLOWED_ORIGINS=${APP_CORS_ALLOWED_ORIGINS}
- APP_JWT_SECRET=${APP_JWT_SECRET}
- APP_JWT_EXPIRATION=86400000
- APP_JWT_REFRESH_EXPIRATION=3600000
- APP_JWT_PASSWORD_RESET_EXPIRATION=900000
- APP_FILE_UPLOAD_PATH=/app/uploads/
- APP_FILE_MAX_SIZE=10485760
- APP_FILE_ALLOWED_EXTENSIONS=jpg,jpeg,png,pdf,doc,docx
- APP_SECURITY_MAX_LOGIN_ATTEMPTS=5
- APP_SECURITY_LOGIN_ATTEMPT_WINDOW=900000
- APP_SECURITY_IP_BLOCK_DURATION=3600000
# Cloudinary
- CLOUDINARY_CLOUD_NAME=${CLOUDINARY_CLOUD_NAME}
- CLOUDINARY_API_KEY=${CLOUDINARY_API_KEY}
- CLOUDINARY_API_SECRET=${CLOUDINARY_API_SECRET}
# SMTP Mail
- SPRING_MAIL_HOST=${SPRING_MAIL_HOST}
- SPRING_MAIL_PORT=${SPRING_MAIL_PORT}
- SPRING_MAIL_USERNAME=${SPRING_MAIL_USERNAME}
- SPRING_MAIL_PASSWORD=${SPRING_MAIL_PASSWORD}
- SPRING_MAIL_PROPERTIES_MAIL_SMTP_AUTH=${SPRING_MAIL_PROPERTIES_MAIL_SMTP_AUTH}
- SPRING_MAIL_PROPERTIES_MAIL_SMTP_STARTTLS_ENABLE=${SPRING_MAIL_PROPERTIES_MAIL_SMTP_STARTTLS_ENABLE}
- SPRING_MAIL_DEFAULT_ENCODING=${SPRING_MAIL_DEFAULT_ENCODING}
- SPRING_MAIL_PROPERTIES_MAIL_SMTP_CONNECTIONTIMEOUT=5000
- SPRING_MAIL_PROPERTIES_MAIL_SMTP_TIMEOUT=5000
- SPRING_MAIL_PROPERTIES_MAIL_SMTP_WRITETIMEOUT=5000
- SPRING_MAIL_PROPERTIES_MAIL_DEBUG=false
- MAIL_API_PROVIDER=${MAIL_API_PROVIDER}
- SENDGRID_FROM_EMAIL=${SENDGRID_FROM_EMAIL}
# Razorpay
- RAZORPAY_KEY_ID=${RAZORPAY_KEY_ID}
- RAZORPAY_KEY_SECRET=${RAZORPAY_KEY_SECRET}
- RAZORPAY_MERCHANT_UPI_ID=${RAZORPAY_MERCHANT_UPI_ID}
# Server Port
- SERVER_PORT=${SERVER_PORT}
volumes:
- app_uploads:/app/uploads
depends_on:
postgres:
condition: service_healthy
networks:
- caresync-network
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/actuator/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 120s
volumes:
postgres_data:
driver: local
app_uploads:
driver: local
networks:
caresync-network:
driver: bridge