306f494cd8
- Dockerfile: node:20-alpine, compiles SCSS at build time, single image used for web server and all sync modes (blocks, peers, markets) - docker-compose.yml: explorer + MongoDB (bind-mounted ./db) on shared 'purple' network alongside bitcoinpurpled and electrumx - docker/entrypoint.sh: generates settings.json from env vars via envsubst, dispatches to web/sync-blocks/sync-peers/reindex modes - docker/settings.json.tmpl: minimal settings template parametrized for BitcoinPurple (coin, wallet RPC, MongoDB, theme) - docker/mongo-init.sh: creates app user in explorerdb on first start - .env.example: pre-filled defaults for BitcoinPurple - CLAUDE.md: codebase guidance for Claude Code - .gitignore: add db/ (MongoDB bind-mount data directory)
22 lines
457 B
Docker
22 lines
457 B
Docker
FROM node:20-alpine
|
|
|
|
# gettext provides envsubst for settings.json template rendering
|
|
RUN apk add --no-cache gettext bash
|
|
|
|
WORKDIR /app
|
|
|
|
COPY package*.json ./
|
|
RUN npm install --omit=dev
|
|
|
|
COPY . .
|
|
|
|
# Compile SCSS → CSS (prestart.js also connects to MongoDB which isn't available at build time)
|
|
RUN node ./scripts/compile_css.js
|
|
|
|
RUN chmod +x /app/docker/entrypoint.sh && mkdir -p /app/tmp
|
|
|
|
EXPOSE 3001
|
|
|
|
ENTRYPOINT ["/app/docker/entrypoint.sh"]
|
|
CMD ["web"]
|