134 lines
3.7 KiB
YAML
134 lines
3.7 KiB
YAML
services:
|
|
postgres:
|
|
image: postgres:16-alpine
|
|
container_name: dapp-postgres
|
|
restart: unless-stopped
|
|
volumes:
|
|
- postgres_data:/var/lib/postgresql/data
|
|
- ./backend/db/data:/mnt/isic_csv_data
|
|
environment:
|
|
POSTGRES_DB: ${DB_NAME:-dapp_db}
|
|
POSTGRES_USER: ${DB_USER:-dapp_user}
|
|
POSTGRES_PASSWORD: ${DB_PASSWORD:-dapp_password}
|
|
ports:
|
|
- '5432:5432'
|
|
healthcheck:
|
|
test:
|
|
- CMD-SHELL
|
|
- pg_isready -U ${DB_USER:-dapp_user} -d ${DB_NAME:-dapp_db}
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 5
|
|
ollama:
|
|
image: ollama/ollama:latest
|
|
container_name: dapp-ollama
|
|
restart: unless-stopped
|
|
volumes:
|
|
- ollama_data:/root/.ollama
|
|
ports:
|
|
- '11434:11434'
|
|
command: serve
|
|
backend:
|
|
build:
|
|
context: ./backend
|
|
dockerfile: Dockerfile
|
|
container_name: dapp-backend
|
|
restart: unless-stopped
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
ollama:
|
|
condition: service_started
|
|
volumes:
|
|
- ./backend:/app
|
|
- ./frontend/dist:/app/frontend_dist:ro
|
|
- ./cloudflared.env:/cloudflared.env
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
environment:
|
|
- NODE_ENV=${NODE_ENV:-development}
|
|
- PORT=${PORT:-8000}
|
|
- DB_HOST=postgres
|
|
- DB_PORT=5432
|
|
- DB_NAME=${DB_NAME:-dapp_db}
|
|
- DB_USER=${DB_USER:-dapp_user}
|
|
- DB_PASSWORD=${DB_PASSWORD:-dapp_password}
|
|
- >-
|
|
DATABASE_URL=postgresql://${DB_USER:-dapp_user}:${DB_PASSWORD:-dapp_password}@postgres:5432/${DB_NAME:-dapp_db}
|
|
- OLLAMA_BASE_URL=http://ollama:11434
|
|
- OLLAMA_MODEL=${OLLAMA_MODEL:-qwen2.5:7b}
|
|
- OLLAMA_EMBEDDINGS_MODEL=${OLLAMA_EMBEDDINGS_MODEL:-qwen2.5:7b}
|
|
- FRONTEND_URL=http://localhost:5173
|
|
ports:
|
|
- '8000:8000'
|
|
extra_hosts:
|
|
- host.docker.internal:host-gateway
|
|
frontend:
|
|
build:
|
|
context: ./frontend
|
|
dockerfile: Dockerfile
|
|
container_name: dapp-frontend
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- backend
|
|
volumes:
|
|
- ./frontend:/app
|
|
- frontend_node_modules:/app/node_modules
|
|
ports:
|
|
- '5173:5173'
|
|
command: yarn run dev -- --host 0.0.0.0
|
|
ollama-setup:
|
|
image: curlimages/curl:latest
|
|
container_name: dapp-ollama-setup
|
|
depends_on:
|
|
- ollama
|
|
restart: on-failure
|
|
command: |
|
|
sh -c "
|
|
echo 'Waiting for Ollama to be ready...'
|
|
until curl -s http://ollama:11434/api/tags >/dev/null; do
|
|
sleep 5
|
|
done
|
|
echo 'Ollama is ready, pulling qwen2.5-7b model...'
|
|
curl -X POST http://ollama:11434/api/pull -d '{\"name\":\"${OLLAMA_MODEL:-qwen2.5:7b}\"}' -H 'Content-Type: application/json'
|
|
echo 'Done!'
|
|
"
|
|
cloudflared:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.cloudflared
|
|
restart: unless-stopped
|
|
volumes:
|
|
- ./start-cloudflared.sh:/start-cloudflared.sh
|
|
- ./cloudflared.env:/cloudflared.env
|
|
- ./.cloudflared:/etc/cloudflared
|
|
depends_on:
|
|
- backend
|
|
dns:
|
|
- 1.1.1.1
|
|
- 8.8.8.8
|
|
healthcheck:
|
|
test: ["CMD", "wget", "--spider", "-q", "http://127.0.0.1:39693/metrics", "||", "exit", "1"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 60s
|
|
environment:
|
|
- TUNNEL_METRICS=0.0.0.0:39693
|
|
cloudflared-agent:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.agent
|
|
container_name: dapp-cloudflared-agent
|
|
restart: unless-stopped
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
ports:
|
|
- "9000:9000"
|
|
depends_on:
|
|
- cloudflared
|
|
volumes:
|
|
postgres_data: null
|
|
ollama_data: null
|
|
backend_node_modules: null
|
|
frontend_node_modules: null
|