synthetic-data-generator / docker-compose.yml
daqc's picture
Add docker-compose service setup
116bb4e
raw
history blame
4.4 kB
services:
# Base application
app:
build: .
image: synthetic-data-generator:app
ports:
- "7860:7860"
env_file:
- .env
environment:
- HF_TOKEN=${HF_TOKEN}
networks:
- app-network
depends_on:
argilla:
condition: service_started
required: false
ollama:
condition: service_healthy
required: false
# Ollama service
ollama:
# CPU/NVIDIA usa latest, AMD usa rocm
image: ollama/ollama:${OLLAMA_HARDWARE:-latest}
profiles:
- with-ollama
ports:
- "11434:11434"
command: serve #&& pull ${OLLAMA_MODEL} && run ${OLLAMA_MODEL}
env_file:
- .env
environment:
- OLLAMA_BASE_URL=${OLLAMA_BASE_URL:-}
volumes:
- ollama_data:/root/.ollama
# only AMD if OLLAMA_HARDWARE=rocm
- /dev/kfd:/dev/kfd:${OLLAMA_HARDWARE:-none}=rocm
- /dev/dri:/dev/dri:${OLLAMA_HARDWARE:-none}=rocm
networks:
- app-network
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:11434/api/health"]
interval: 30s
timeout: 10s
retries: 3
# Elasticsearch service for Argilla
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.17.0
profiles:
- with-argilla
environment:
- ES_JAVA_OPTS=-Xms512m -Xmx512m
- node.name=elasticsearch
- cluster.name=es-argilla-local
- discovery.type=single-node
- cluster.routing.allocation.disk.threshold_enabled=false
- xpack.security.enabled=false
volumes:
- es_data:/usr/share/elasticsearch/data
networks:
- app-network
ports:
- "9200:9200"
- "9300:9300"
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9200"]
interval: 30s
timeout: 10s
retries: 3
# PostgreSQL service for Argilla
postgres:
image: postgres:14
profiles:
- with-argilla
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: argilla
networks:
- app-network
volumes:
- postgres_data:/var/lib/postgresql/data
# Redis service for Argilla
redis:
image: redis
profiles:
- with-argilla
networks:
- app-network
# Argilla service
argilla:
image: argilla/argilla-server:latest
profiles:
- with-argilla
ports:
- "6900:6900"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:6900/api/ready"]
interval: 30s
timeout: 10s
retries: 3
env_file:
- .env
environment:
- ARGILLA_HOME_PATH=/var/lib/argilla
- ARGILLA_ELASTICSEARCH=http://elasticsearch:9200
- ARGILLA_DATABASE_URL=postgresql+asyncpg://postgres:postgres@postgres:5432/argilla
- ARGILLA_REDIS_URL=redis://redis:6379/0
- USERNAME=${ARGILLA_USERNAME}
- PASSWORD=${ARGILLA_PASSWORD}
- API_KEY=${ARGILLA_API_KEY}
- WORKSPACE=default
volumes:
- argilla_data:/argilla
networks:
- app-network
depends_on:
elasticsearch:
condition: service_healthy
postgres:
condition: service_started
redis:
condition: service_started
# Argilla Worker
worker:
image: argilla/argilla-server:latest
profiles:
- with-argilla
env_file:
- .env
environment:
- ARGILLA_HOME_PATH=/var/lib/argilla
- ARGILLA_ELASTICSEARCH=http://elasticsearch:9200
- ARGILLA_DATABASE_URL=postgresql+asyncpg://postgres:postgres@postgres:5432/argilla
- ARGILLA_REDIS_URL=redis://redis:6379/0
- BACKGROUND_NUM_WORKERS=2
- USERNAME=${ARGILLA_USERNAME}
- PASSWORD=${ARGILLA_PASSWORD}
- API_KEY=${ARGILLA_API_KEY}
- WORKSPACE=default
networks:
- app-network
depends_on:
- postgres
- elasticsearch
- redis
command: sh -c 'python -m argilla_server worker --num-workers $${BACKGROUND_NUM_WORKERS}'
networks:
app-network:
driver: bridge
volumes:
es_data:
driver: local
argilla_data:
driver: local
ollama_data:
driver: local
postgres_data:
driver: local