---
services:
souschef-ui:
build:
context: .
dockerfile: Dockerfile
args:
PYTHON_VERSION: "3.13.1"
POETRY_VERSION: "1.8.3"
ports:
- "9999:9999"
env_file:
- .env
environment:
- PYTHONPATH=/app
- STREAMLIT_SERVER_ADDRESS=0.0.0.0
- STREAMLIT_SERVER_PORT=9999
- STREAMLIT_SERVER_HEADLESS=true
- STREAMLIT_LOGGER_LEVEL=info
- STREAMLIT_SERVER_LOGGER_LEVEL=info
- PYTHONUNBUFFERED=1
- STREAMLIT_SERVER_ENABLE_XSRF_PROTECTION=true
- STREAMLIT_BROWSER_GATHER_USAGE_STATS=false
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
labels: "service=souschef-ui"
# volumes:
# Mount local directory for development (optional, read-only)
# - ./souschef:/app/souschef:ro
# Mount .env for configuration
# - ./.env:/app/.env:ro
healthcheck:
test: ["CMD", "python", "-m", "souschef.ui.health_check"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
deploy:
resources:
limits:
memory: 1G
cpus: '0.5'
reservations:
memory: 256M
cpus: '0.25'
security_opt:
- no-new-privileges:true
read_only: true
tmpfs:
- /tmp:noexec,nosuid,size=100m
- /run:noexec,nosuid,size=50m
networks:
- souschef-network
restart: unless-stopped
container_name: souschef-ui
networks:
souschef-network:
driver: bridge
driver_opts:
com.docker.network.bridge.name: br-souschef