Compare commits
2 Commits
131cf68600
...
4198999ab1
| Author | SHA1 | Date | |
|---|---|---|---|
| 4198999ab1 | |||
| 90f5dfe8f4 |
26
.dockerignore
Normal file
26
.dockerignore
Normal file
@ -0,0 +1,26 @@
|
||||
# .dockerignore
|
||||
# Do not copy environment files into the image
|
||||
.env
|
||||
.env.prod
|
||||
|
||||
# Do not copy git repository
|
||||
.git
|
||||
.gitignore
|
||||
|
||||
# Do not copy docker files themselves
|
||||
Dockerfile
|
||||
docker-compose.yml
|
||||
docker-compose.prod.yml
|
||||
.dockerignore
|
||||
|
||||
# Do not copy local IDE settings
|
||||
.vscode
|
||||
.idea
|
||||
|
||||
# Do not copy local test data or backups
|
||||
*.bak
|
||||
AllStaff.json
|
||||
hierarchy_mapping.json
|
||||
|
||||
# Deno cache directory (if exists locally)
|
||||
.deno
|
||||
37
.gitignore
vendored
Normal file
37
.gitignore
vendored
Normal file
@ -0,0 +1,37 @@
|
||||
# .gitignore
|
||||
|
||||
# Environment Variables (NEVER commit these)
|
||||
.env
|
||||
.env.prod
|
||||
.env.local
|
||||
|
||||
# Docker volumes
|
||||
hrms_db_data/
|
||||
|
||||
# IDE and OS files
|
||||
.vscode/
|
||||
.idea/
|
||||
.DS_Store
|
||||
*.swp
|
||||
|
||||
# Deno specific
|
||||
.deno/
|
||||
|
||||
# Backup files
|
||||
*.bak
|
||||
routes.ts.bkp
|
||||
|
||||
# Logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
|
||||
# Database Dumps
|
||||
database-dump/*.sql
|
||||
|
||||
# Sensitive Data Imports/Exports
|
||||
services/ems/AllStaff.json
|
||||
services/ems/hierarchy_mapping.json
|
||||
|
||||
# Protobuf generation
|
||||
node_modules/
|
||||
generated/
|
||||
138
docker-compose.prod.yml
Normal file
138
docker-compose.prod.yml
Normal file
@ -0,0 +1,138 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
# ==========================================
|
||||
# DATABASES (Isolated & Secured)
|
||||
# ==========================================
|
||||
ems_db:
|
||||
image: docker.io/library/mysql:8.4
|
||||
container_name: hrms_prod_ems_db
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD:-root}
|
||||
MYSQL_DATABASE: hrms_ems
|
||||
MYSQL_USER: ${DB_USER:-admin}
|
||||
MYSQL_PASSWORD: ${DB_PASSWORD:-admin123}
|
||||
volumes:
|
||||
- ./init-db/01-init-ems.sql:/docker-entrypoint-initdb.d/01-init-ems.sql:Z
|
||||
- prod_ems_db_data:/var/lib/mysql
|
||||
networks:
|
||||
- hrms_internal_network
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
|
||||
ams_db:
|
||||
image: docker.io/library/mysql:8.4
|
||||
container_name: hrms_prod_ams_db
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD:-root}
|
||||
MYSQL_DATABASE: hrms_ams
|
||||
MYSQL_USER: ${DB_USER:-admin}
|
||||
MYSQL_PASSWORD: ${DB_PASSWORD:-admin123}
|
||||
volumes:
|
||||
- ./init-db/02-init-ams.sql:/docker-entrypoint-initdb.d/02-init-ams.sql:Z
|
||||
- prod_ams_db_data:/var/lib/mysql
|
||||
networks:
|
||||
- hrms_internal_network
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
|
||||
lms_db:
|
||||
image: docker.io/library/mysql:8.4
|
||||
container_name: hrms_prod_lms_db
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD:-root}
|
||||
MYSQL_DATABASE: hrms_lms
|
||||
MYSQL_USER: ${DB_USER:-admin}
|
||||
MYSQL_PASSWORD: ${DB_PASSWORD:-admin123}
|
||||
volumes:
|
||||
- ./init-db/03-init-lms.sql:/docker-entrypoint-initdb.d/03-init-lms.sql:Z
|
||||
- prod_lms_db_data:/var/lib/mysql
|
||||
networks:
|
||||
- hrms_internal_network
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
|
||||
# ==========================================
|
||||
# MICROSERVICES
|
||||
# ==========================================
|
||||
gateway:
|
||||
build: .
|
||||
container_name: hrms_prod_gateway
|
||||
command: run -A --env-file=.env.prod services/gateway/main.ts
|
||||
ports:
|
||||
- "8000:8000"
|
||||
env_file:
|
||||
- .env.prod
|
||||
depends_on:
|
||||
ems:
|
||||
condition: service_started
|
||||
networks:
|
||||
- hrms_internal_network
|
||||
restart: unless-stopped
|
||||
|
||||
ems:
|
||||
build: .
|
||||
container_name: hrms_prod_ems
|
||||
command: run -A --env-file=.env.prod services/ems/main.ts
|
||||
env_file:
|
||||
- .env.prod
|
||||
environment:
|
||||
- DB_HOST=ems_db # <-- Forces EMS to connect to ems_db
|
||||
depends_on:
|
||||
ems_db:
|
||||
condition: service_healthy
|
||||
networks:
|
||||
- hrms_internal_network
|
||||
restart: unless-stopped
|
||||
|
||||
ams:
|
||||
build: .
|
||||
container_name: hrms_prod_ams
|
||||
command: run -A --env-file=.env.prod services/ams/main.ts
|
||||
env_file:
|
||||
- .env.prod
|
||||
environment:
|
||||
- DB_HOST=ams_db # <-- Forces AMS to connect to ams_db
|
||||
depends_on:
|
||||
ams_db:
|
||||
condition: service_healthy
|
||||
ems:
|
||||
condition: service_started
|
||||
networks:
|
||||
- hrms_internal_network
|
||||
restart: unless-stopped
|
||||
|
||||
lms:
|
||||
build: .
|
||||
container_name: hrms_prod_lms
|
||||
command: run -A --env-file=.env.prod services/lms/main.ts
|
||||
env_file:
|
||||
- .env.prod
|
||||
environment:
|
||||
- DB_HOST=lms_db # <-- Forces LMS to connect to lms_db
|
||||
depends_on:
|
||||
lms_db:
|
||||
condition: service_healthy
|
||||
ems:
|
||||
condition: service_started
|
||||
networks:
|
||||
- hrms_internal_network
|
||||
restart: unless-stopped
|
||||
|
||||
networks:
|
||||
hrms_internal_network:
|
||||
driver: bridge
|
||||
|
||||
volumes:
|
||||
prod_ems_db_data:
|
||||
prod_ams_db_data:
|
||||
prod_lms_db_data:
|
||||
Loading…
x
Reference in New Issue
Block a user