version: '3.8'
services:
claude-mcp-slack:
build:
context: .
dockerfile: Dockerfile
environment:
- SLACK_TOKEN=${SLACK_TOKEN}
- DOWNLOAD_DIRECTORY=/app/downloads
volumes:
- ./downloads:/app/downloads
- ./src:/app/src:ro
ports:
- "3000:3000"
restart: unless-stopped
user: "1001:1001"
security_opt:
- no-new-privileges:true
cap_drop:
- ALL
cap_add:
- CHOWN
- DAC_OVERRIDE
read_only: true
tmpfs:
- /tmp:noexec,nosuid,size=128m
healthcheck:
test: ["CMD", "bun", "run", "src/slack-server.ts", "--health-check"]
interval: 30s
timeout: 10s
retries: 3
start_period: 5s
# Development service with hot reload
claude-mcp-slack-dev:
build:
context: .
dockerfile: Dockerfile
environment:
- SLACK_TOKEN=${SLACK_TOKEN}
- DOWNLOAD_DIRECTORY=/app/downloads
- NODE_ENV=development
volumes:
- .:/app
- /app/node_modules
ports:
- "3001:3000"
command: ["bun", "--hot", "src/slack-server.ts"]
profiles:
- dev
volumes:
downloads:
driver: local