|
1 | 1 | services: |
2 | | - ### ✅ API (Azure Functions in .NET 9) ### |
3 | 2 | api: |
4 | 3 | container_name: "api" |
5 | 4 | build: |
6 | | - context: ./src |
| 5 | + context: ./Src |
7 | 6 | dockerfile: ServiceLayer.API/Dockerfile |
8 | 7 | platform: linux/amd64 |
9 | 8 | restart: always |
10 | 9 | environment: |
11 | 10 | FUNCTIONS_WORKER_RUNTIME: "dotnet-isolated" |
12 | 11 | AzureWebJobsStorage: "${AZURE_WEB_JOBS_STORAGE}" |
13 | 12 | AzureWebJobsSecretStorageType: "files" |
| 13 | + DatabaseConnectionString: "${DatabaseConnectionString}" |
| 14 | + EVENT_GRID_TOPIC_URL: "${EVENT_GRID_TOPIC_URL}" |
| 15 | + EVENT_GRID_TOPIC_KEY: "${EVENT_GRID_TOPIC_KEY}" |
14 | 16 | ports: |
15 | 17 | - "${API_PORT}:80" |
| 18 | + healthcheck: |
| 19 | + test: ["CMD-SHELL", "curl -f http://localhost:80/api/health || exit 1"] |
| 20 | + interval: 30s |
| 21 | + timeout: 10s |
| 22 | + retries: 3 |
| 23 | + start_period: 40s |
| 24 | + depends_on: |
| 25 | + azurite: |
| 26 | + condition: service_healthy |
| 27 | + db: |
| 28 | + condition: service_healthy |
| 29 | + networks: |
| 30 | + - backend |
| 31 | + |
| 32 | + azurite: |
| 33 | + container_name: "azurite" |
| 34 | + image: mcr.microsoft.com/azure-storage/azurite:latest |
| 35 | + restart: always |
| 36 | + command: "azurite --blobHost 0.0.0.0 --queueHost 0.0.0.0 --tableHost 0.0.0.0 --location /data --debug /data/debug.log" |
| 37 | + ports: |
| 38 | + - "${AZURITE_BLOB_PORT}:10000" |
| 39 | + - "${AZURITE_QUEUE_PORT}:10001" |
| 40 | + - "${AZURITE_TABLE_PORT}:10002" |
| 41 | + healthcheck: |
| 42 | + test: ["CMD-SHELL", "/bin/sh -c 'nc -z 127.0.0.1 10000 || exit 1'"] |
| 43 | + interval: 10s |
| 44 | + timeout: 5s |
| 45 | + retries: 10 |
| 46 | + start_period: 15s |
| 47 | + volumes: |
| 48 | + - azurite-data:/data |
| 49 | + networks: |
| 50 | + - backend |
| 51 | + |
| 52 | + db: |
| 53 | + container_name: "db" |
| 54 | + image: mcr.microsoft.com/mssql/server:2022-latest |
| 55 | + restart: always |
| 56 | + environment: |
| 57 | + ACCEPT_EULA: "Y" |
| 58 | + MSSQL_SA_PASSWORD: "${DATABASE_PASSWORD}" |
| 59 | + MSSQL_PID: "Developer" |
| 60 | + ports: |
| 61 | + - "1433:1433" |
| 62 | + user: "root" |
| 63 | + volumes: |
| 64 | + - db-data:/var/opt/mssql |
| 65 | + healthcheck: |
| 66 | + test: ["CMD-SHELL", "pgrep -f sqlservr || exit 1"] |
| 67 | + interval: 20s |
| 68 | + timeout: 10s |
| 69 | + retries: 6 |
| 70 | + start_period: 60s |
| 71 | + networks: |
| 72 | + - backend |
| 73 | + |
| 74 | + db-setup: |
| 75 | + container_name: "db-setup" |
| 76 | + build: |
| 77 | + context: ./database |
| 78 | + dockerfile: Dockerfile |
| 79 | + restart: "no" |
| 80 | + environment: |
| 81 | + DATABASE_PASSWORD: "${DATABASE_PASSWORD}" |
| 82 | + depends_on: |
| 83 | + db: |
| 84 | + condition: service_healthy |
16 | 85 | networks: |
17 | 86 | - backend |
18 | 87 |
|
19 | 88 | networks: |
20 | 89 | backend: |
| 90 | + name: backend-network |
21 | 91 | driver: bridge |
| 92 | +volumes: |
| 93 | + azurite-data: |
| 94 | + name: azurite-data |
| 95 | + db-data: |
| 96 | + name: db-data |
| 97 | + driver: local |
0 commit comments