39 lines
1.2 KiB
Text
39 lines
1.2 KiB
Text
|
|
# Prometheus service image.
|
||
|
|
#
|
||
|
|
# Built for the standalone docker-compose at deploy/docker-compose.yml, which
|
||
|
|
# attaches to the hephaestus_default network so Hephaestus's Caddy can route
|
||
|
|
# prometheus.x → prometheus:3700 without either side knowing about the other.
|
||
|
|
#
|
||
|
|
# node:22-alpine keeps the image small (~55 MB with deps) and gives us
|
||
|
|
# node:sqlite (stable in 22+). We copy package files first so a code change
|
||
|
|
# that leaves deps alone reuses the npm layer.
|
||
|
|
|
||
|
|
FROM node:22-alpine
|
||
|
|
|
||
|
|
RUN apk add --no-cache tini
|
||
|
|
|
||
|
|
WORKDIR /opt/prometheus
|
||
|
|
|
||
|
|
COPY package.json package-lock.json ./
|
||
|
|
RUN npm ci --omit=dev
|
||
|
|
|
||
|
|
COPY service/ ./service/
|
||
|
|
COPY public/ ./public/
|
||
|
|
COPY scripts/ ./scripts/
|
||
|
|
|
||
|
|
# /data holds everything that must survive a container rebuild: the SQLite
|
||
|
|
# DB, the service's own ed25519 key, uploaded binaries and (for the snapshot
|
||
|
|
# timer) the rendered static mirror.
|
||
|
|
ENV PROMETHEUS_DB=/data/db.sqlite \
|
||
|
|
PROMETHEUS_KEY_DIR=/data/keys \
|
||
|
|
PROMETHEUS_UPLOAD_DIR=/data/uploads \
|
||
|
|
BIND=0.0.0.0 \
|
||
|
|
PORT=3700
|
||
|
|
RUN mkdir -p /data/keys /data/uploads && chown -R node:node /data /opt/prometheus
|
||
|
|
USER node
|
||
|
|
|
||
|
|
EXPOSE 3700
|
||
|
|
|
||
|
|
ENTRYPOINT ["/sbin/tini", "--"]
|
||
|
|
CMD ["node", "service/server.js"]
|