diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..a577a9b --- /dev/null +++ b/.dockerignore @@ -0,0 +1,7 @@ +.git +.env +*.db +*.db-wal +*.db-shm +bin/ +st-agent-worker diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..df45f1a --- /dev/null +++ b/Dockerfile @@ -0,0 +1,13 @@ +FROM golang:1.23-alpine AS build +WORKDIR /src +COPY go.mod go.sum ./ +RUN go mod download +COPY . . +RUN CGO_ENABLED=0 go build -o /worker . + +FROM alpine:3.20 +RUN apk add --no-cache ca-certificates tzdata +COPY --from=build /worker /worker +RUN mkdir -p /data +EXPOSE 8080 +ENTRYPOINT ["/worker"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..37e6a7c --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,21 @@ +services: + worker: + build: . + restart: unless-stopped + environment: + ST_API_KEY: ${ST_API_KEY} + WEBHOOK_SECRET: ${WEBHOOK_SECRET} + ELIGIBLE_APPOINTMENTS: ${ELIGIBLE_APPOINTMENTS} + DB_PATH: /data/worker.db + DRY_RUN: ${DRY_RUN:-} + volumes: + - worker-data:/data + healthcheck: + test: ["CMD", "wget", "-qO-", "http://localhost:8080/healthz"] + interval: 30s + timeout: 5s + retries: 3 + start_period: 120s + +volumes: + worker-data: