Initial commit: AIS vessel position tracking microservice

Go service that connects to aisstream.io websocket, filtered by MMSIs
from track_devices table. Writes positions to aisstream_pos (24h TTL)
and upserts latest position per vessel to aisstream_last. Reloads
MMSI list every 5 minutes to pick up changes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
evmo 2026-04-27 01:40:50 +00:00
commit 966ca73b9b
6 changed files with 402 additions and 0 deletions

11
Dockerfile Normal file
View file

@ -0,0 +1,11 @@
FROM golang:1.22-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY main.go .
RUN CGO_ENABLED=0 go build -o aisstream .
FROM alpine:3.20
RUN apk add --no-cache ca-certificates tzdata
COPY --from=builder /app/aisstream /usr/local/bin/aisstream
CMD ["aisstream"]