Create a Dockerfile next to the downloaded binary:
FROM alpine:3.20
RUN apk add --no-cache ca-certificates tzdata curl
WORKDIR /app
COPY mockarty /app/mockarty
RUN chmod +x /app/mockarty
EXPOSE 5770 5772 5773
HEALTHCHECK --interval=30s --timeout=5s \
CMD curl -f http://localhost:5770/health/live || exit 1
ENTRYPOINT ["/app/mockarty"]
docker build -t mockarty .
docker run -d --name mockarty \
-p 5770:5770 -p 5772:5772 -p 5773:5773 \
-e DB_DSN="postgres://user:pass@host:5432/mockarty?sslmode=disable" \
-e HTTP_PORT=5770 \
mockarty
Full stack with PostgreSQL and Redis:
services:
postgres:
image: postgres:16-alpine
environment:
POSTGRES_DB: mockarty
POSTGRES_USER: mockarty
POSTGRES_PASSWORD: changeme
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U mockarty"]
interval: 5s
redis:
image: redis:7-alpine
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
mockarty:
build: .
ports:
- "5770:5770" # HTTP / Web UI
- "5772:5772" # MCP
- "5773:5773" # Coordinator gRPC
environment:
DB_DSN: "postgres://mockarty:changeme@postgres:5432/mockarty?sslmode=disable"
REDIS_ADDR: "redis:6379"
REPO_TYPE: "composite"
HTTP_PORT: "5770"
depends_on:
postgres: { condition: service_healthy }
redis: { condition: service_healthy }
volumes:
pgdata:
Run binary directly (no Docker):
Web UI available at http://localhost:5770/ui/ after start