|
version: '3.8' |
|
|
|
services: |
|
|
|
mongo: |
|
image: mongo:7.0 |
|
container_name: chat-mongo |
|
restart: unless-stopped |
|
environment: |
|
MONGO_INITDB_ROOT_USERNAME: admin |
|
MONGO_INITDB_ROOT_PASSWORD: password123 |
|
MONGO_INITDB_DATABASE: chatapp |
|
ports: |
|
- "27017:27017" |
|
volumes: |
|
- mongo_data:/data/db |
|
- ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro |
|
networks: |
|
- chat-network |
|
healthcheck: |
|
test: ["CMD", "mongosh", "--eval", "db.adminCommand('ping')"] |
|
interval: 30s |
|
timeout: 10s |
|
retries: 3 |
|
start_period: 40s |
|
|
|
|
|
server: |
|
build: |
|
context: ./server |
|
dockerfile: Dockerfile |
|
container_name: chat-server |
|
restart: unless-stopped |
|
environment: |
|
- NODE_ENV=production |
|
- MONGODB_URI=mongodb://admin:password123@mongo:27017/chatapp?authSource=admin |
|
- JWT_SECRET=your-super-secret-jwt-key-change-this-in-production |
|
- PORT=5000 |
|
- CLIENT_URL=http://localhost:3000 |
|
ports: |
|
- "5000:5000" |
|
depends_on: |
|
mongo: |
|
condition: service_healthy |
|
networks: |
|
- chat-network |
|
healthcheck: |
|
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:5000/api/health"] |
|
interval: 30s |
|
timeout: 10s |
|
retries: 3 |
|
start_period: 40s |
|
|
|
|
|
client: |
|
build: |
|
context: ./client |
|
dockerfile: Dockerfile |
|
container_name: chat-client |
|
restart: unless-stopped |
|
ports: |
|
- "3000:80" |
|
depends_on: |
|
server: |
|
condition: service_healthy |
|
networks: |
|
- chat-network |
|
environment: |
|
- VITE_API_URL=http://localhost:5000 |
|
healthcheck: |
|
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:80"] |
|
interval: 30s |
|
timeout: 10s |
|
retries: 3 |
|
start_period: 40s |
|
|
|
volumes: |
|
mongo_data: |
|
|
|
networks: |
|
chat-network: |
|
driver: bridge |
|
|