-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
125 lines (120 loc) · 5.42 KB
/
docker-compose.yml
File metadata and controls
125 lines (120 loc) · 5.42 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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
services:
sql-server:
image: mcr.microsoft.com/mssql/server:2022-latest
platform: linux/amd64
container_name: aipm-sqlserver
environment:
ACCEPT_EULA: Y
MSSQL_SA_PASSWORD: ${MSSQL_SA_PASSWORD}
MSSQL_PID: Developer
ports:
- "${CONTAINER_DB_PORT:-1433}:1433"
volumes:
- sqlserver_data:/var/opt/mssql
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "/opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P \"$MSSQL_SA_PASSWORD\" -C -Q 'SELECT 1'"]
interval: ${HEALTH_CHECK_INTERVAL_SECONDS:-10}s
timeout: 5s
retries: 5
start_period: 30s
networks:
- aipm-network
azurite:
image: mcr.microsoft.com/azure-storage/azurite:latest
container_name: aipm-azurite
command: "azurite --blobHost 0.0.0.0 --blobPort 10000 --queueHost 0.0.0.0 --queuePort 10001 --tableHost 0.0.0.0 --tablePort 10002 --location /workspace --debug /workspace/debug.log"
environment:
AZURITE_ACCOUNTS: ${AZURITE_ACCOUNTS:-devstoreaccount1:7EcjH8qw7X6gFutn5Omgg3e/EB/sTN07c5WLe1Rrl9g=}
ports:
- "10000:10000" # Blob service
- "10001:10001" # Queue service
- "10002:10002" # Table service
volumes:
- azurite_data:/workspace
restart: unless-stopped
networks:
- aipm-network
api:
build:
context: .
dockerfile: Dockerfile.backend
container_name: aipm-api
depends_on:
sql-server:
condition: service_healthy
azurite:
condition: service_started
environment:
ASPNETCORE_ENVIRONMENT: Development
ASPNETCORE_URLS: http://+:8080
MSSQL_SA_PASSWORD: ${MSSQL_SA_PASSWORD}
JWT_SECRET: ${JWT_SECRET}
REPLICATE_API_TOKEN: ${REPLICATE_API_TOKEN}
REPLICATE_WEBHOOK_SECRET: ${REPLICATE_WEBHOOK_SECRET}
REPLICATE_OWNER: ${REPLICATE_OWNER}
REPLICATE_HARDWARE: ${REPLICATE_HARDWARE}
Replicate__ApiToken: ${REPLICATE_API_TOKEN}
Replicate__WebhookSecret: ${REPLICATE_WEBHOOK_SECRET}
Replicate__Owner: ${REPLICATE_OWNER}
Replicate__Hardware: ${REPLICATE_HARDWARE}
GOOGLE_CLIENT_ID: ${GOOGLE_CLIENT_ID}
GOOGLE_CLIENT_SECRET: ${GOOGLE_CLIENT_SECRET}
STRIPE_SECRET_KEY: ${STRIPE_SECRET_KEY}
STRIPE_PUBLISHABLE_KEY: ${STRIPE_PUBLISHABLE_KEY}
STRIPE_WEBHOOK_SECRET: ${STRIPE_WEBHOOK_SECRET}
# Email (SMTP or API providers, optional for local testing)
Email__Enabled: ${Email__Enabled:-false}
Email__Username: ${Email__Username:-}
Email__Password: ${Email__Password:-}
Email__FromEmail: ${Email__FromEmail:-no-reply@aiprofilephotomaker.com}
Email__FromName: ${Email__FromName:-AI Profile Photo Maker}
Email__SmtpHost: ${Email__SmtpHost:-}
Email__SmtpPort: ${Email__SmtpPort:-465}
Email__EnableSsl: ${Email__EnableSsl:-true}
Email__UseApi: ${Email__UseApi:-true}
Email__PostmarkServerToken: ${Email__PostmarkServerToken:-}
Email__PostmarkMessageStream: ${Email__PostmarkMessageStream:-outbound}
Email__SandboxMode: ${Email__SandboxMode:-true}
Email__FrontendBaseUrl: ${Email__FrontendBaseUrl:-http://localhost:4200}
# Use a docker-specific connection string so host env vars (often pointing to localhost)
# don't break container-to-container connectivity.
AZURE_STORAGE_CONNECTION_STRING: ${AZURE_STORAGE_CONNECTION_STRING_DOCKER:-DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=7EcjH8qw7X6gFutn5Omgg3e/EB/sTN07c5WLe1Rrl9g=;BlobEndpoint=http://azurite:10000/devstoreaccount1;QueueEndpoint=http://azurite:10001/devstoreaccount1;TableEndpoint=http://azurite:10002/devstoreaccount1;}
AZURE_STORAGE_CONTAINER_NAME: ${AZURE_STORAGE_CONTAINER_NAME}
AzureStorage__ConnectionString: ${AZURE_STORAGE_CONNECTION_STRING_DOCKER:-DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=7EcjH8qw7X6gFutn5Omgg3e/EB/sTN07c5WLe1Rrl9g=;BlobEndpoint=http://azurite:10000/devstoreaccount1;QueueEndpoint=http://azurite:10001/devstoreaccount1;TableEndpoint=http://azurite:10002/devstoreaccount1;}
AzureStorage__ContainerName: ${AZURE_STORAGE_CONTAINER_NAME}
ConnectionStrings__AzureStorage: ${AZURE_STORAGE_CONNECTION_STRING_DOCKER:-DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=7EcjH8qw7X6gFutn5Omgg3e/EB/sTN07c5WLe1Rrl9g=;BlobEndpoint=http://azurite:10000/devstoreaccount1;QueueEndpoint=http://azurite:10001/devstoreaccount1;TableEndpoint=http://azurite:10002/devstoreaccount1;}
ConnectionStrings__DefaultConnection: Server=sql-server,1433;Database=AIProfileMaker;User Id=sa;Password=${MSSQL_SA_PASSWORD};TrustServerCertificate=true;MultipleActiveResultSets=true;
Database__AutoMigrateOnStartup: ${Database__AutoMigrateOnStartup:-false}
APP_BASE_URL: ${APP_BASE_URL}
EXTERNAL_API_BASE_URL: ${EXTERNAL_API_BASE_URL}
ExternalApiBaseUrl: ${EXTERNAL_API_BASE_URL}
OAUTH_BASE_URL: ${OAUTH_BASE_URL}
ports:
- "${API_HTTP_PORT:-5032}:8080"
restart: unless-stopped
networks:
- aipm-network
frontend:
build:
context: .
dockerfile: Dockerfile.frontend
args:
ANGULAR_BUILD_SCRIPT: build:docker
container_name: aipm-frontend
depends_on:
api:
condition: service_started
ports:
- "${UI_HTTP_PORT:-4200}:80"
restart: unless-stopped
networks:
- aipm-network
volumes:
sqlserver_data:
driver: local
azurite_data:
driver: local
networks:
aipm-network:
driver: bridge