Terraform: - Hetzner CX22 server with Docker, firewall (80/443/22) - SSH key and output for server IP Docker Compose: - Caddy reverse proxy (auto HTTPS) - Journal and Planner app containers - BRouter routing engine container - PostgreSQL + PostGIS - Garage S3 storage BRouter: - Dockerfile based on eclipse-temurin:11-jre - Segment download script for Germany (4 tiles, ~750MB) CD Pipeline: - Build & push Docker images to ghcr.io on main push - Deploy step commented out (enable when server provisioned) Scripts: - PostgreSQL daily backup with 14-day retention - Dockerfiles for both apps (multi-stage builds) Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
27 lines
1,009 B
Docker
27 lines
1,009 B
Docker
FROM eclipse-temurin:11-jre-jammy
|
|
|
|
WORKDIR /brouter
|
|
|
|
# Download latest BRouter release
|
|
ARG BROUTER_VERSION=1.7.7
|
|
RUN apt-get update && apt-get install -y --no-install-recommends wget unzip \
|
|
&& wget -q "https://github.com/abrensch/brouter/releases/download/${BROUTER_VERSION}/brouter-${BROUTER_VERSION}.zip" \
|
|
&& unzip "brouter-${BROUTER_VERSION}.zip" \
|
|
&& rm "brouter-${BROUTER_VERSION}.zip" \
|
|
&& apt-get purge -y wget unzip && apt-get autoremove -y && rm -rf /var/lib/apt/lists/*
|
|
|
|
# Create directories for segments and profiles
|
|
RUN mkdir -p /data/segments /data/profiles
|
|
|
|
# Copy default profiles from release
|
|
RUN cp -r profiles2/* /data/profiles/ 2>/dev/null || true
|
|
|
|
EXPOSE 17777
|
|
|
|
# BRouter server: <segmentdir> <profiledir> <customprofiledir> <port> <maxthreads>
|
|
CMD ["java", "-Xmx512M", "-Xms128M", "-Xmn32M", \
|
|
"-DmaxRunningTime=300", \
|
|
"-cp", "brouter.jar", \
|
|
"btools.server.RouteServer", \
|
|
"/data/segments", "/data/profiles", "/data/profiles", \
|
|
"17777", "4"]
|