add files infra docker service for data platform

This commit is contained in:
jigoong
2026-02-16 17:21:59 +07:00
parent ce75555958
commit 300ed08d9e
46 changed files with 2442 additions and 14 deletions

17
01-infra/README.md Normal file
View File

@@ -0,0 +1,17 @@
# 01-infra: Infrastructure Layer
## Services
- **Nginx Proxy Manager** (port 80, 443, 81)
- **Keycloak** (port 8080)
- **PostgreSQL** (internal only)
## Start
```bash
docker compose --env-file ../.env.global up -d
```
## Access
- Nginx Proxy Manager: http://localhost:81
- Default: admin@example.com / changeme
- Keycloak: http://localhost:8080
- Admin: see KEYCLOAK_ADMIN in .env.global

View File

@@ -0,0 +1,62 @@
services:
nginx-proxy:
image: jc21/nginx-proxy-manager:latest
container_name: nginx-proxy-manager
ports:
- "80:80"
- "443:443"
- "81:81"
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
environment:
- TZ=${TZ:-Asia/Bangkok}
networks:
- shared_data_network
restart: unless-stopped
keycloak:
image: quay.io/keycloak/keycloak:23.0
container_name: keycloak
command: start-dev
environment:
KC_BOOTSTRAP_ADMIN_USERNAME: ${KEYCLOAK_ADMIN}
KC_BOOTSTRAP_ADMIN_PASSWORD: ${KEYCLOAK_ADMIN_PASSWORD}
KC_DB: postgres
KC_DB_URL: jdbc:postgresql://postgres:5432/${DB_NAME}
KC_DB_USERNAME: ${DB_USER}
KC_DB_PASSWORD: ${DB_PASSWORD}
KC_HOSTNAME_STRICT: "false"
KC_HTTP_ENABLED: "true"
KC_PROXY: edge
ports:
- "8080:8080"
networks:
- shared_data_network
restart: unless-stopped
depends_on:
- postgres
postgres:
image: postgres:15-alpine
container_name: postgres
environment:
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_USER: ${DB_USER}
POSTGRES_DB: ${DB_NAME}
TZ: ${TZ:-Asia/Bangkok}
volumes:
- ./data/postgres:/var/lib/postgresql/data
- ./init:/docker-entrypoint-initdb.d
networks:
- shared_data_network
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${DB_USER}"]
interval: 10s
timeout: 5s
retries: 5
networks:
shared_data_network:
external: true

View File

@@ -0,0 +1,9 @@
CREATE SCHEMA IF NOT EXISTS fastapi;
CREATE SCHEMA IF NOT EXISTS operationbi;
CREATE SCHEMA IF NOT EXISTS raw_data;
CREATE SCHEMA IF NOT EXISTS analytics;
GRANT ALL ON SCHEMA fastapi TO postgres;
GRANT ALL ON SCHEMA operationbi TO postgres;
GRANT ALL ON SCHEMA raw_data TO postgres;
GRANT ALL ON SCHEMA analytics TO postgres;