mirror of
https://github.com/warmbly/warmbly.git
synced 2026-08-18 16:01:18 +00:00
38 lines
1.3 KiB
Docker
38 lines
1.3 KiB
Docker
# syntax=docker/dockerfile:1.7
|
|
#
|
|
# Hot-reload image for the Rust tracking service. Used only by the
|
|
# `make dev` flow via docker-compose.dev.yml — production still uses
|
|
# tracking/Dockerfile.
|
|
#
|
|
# The container expects:
|
|
# - Source bind-mounted at /app
|
|
# - $CARGO_HOME / $CARGO_TARGET_DIR on named volumes so the registry
|
|
# and the compiled artifact cache survive container recreates AND
|
|
# are shared across worktrees.
|
|
#
|
|
# cargo-watch handles the watch loop: on any change under /app/src,
|
|
# it re-runs `cargo run`. Incremental compile against the warm
|
|
# target/ dir typically takes 2-10s for a single-file change.
|
|
|
|
FROM rust:1.93-alpine
|
|
|
|
RUN apk add --no-cache \
|
|
musl-dev cmake make gcc g++ pkgconfig \
|
|
openssl-dev openssl-libs-static curl-dev zlib-static \
|
|
git
|
|
|
|
# Pin cargo-watch so the dev image is reproducible.
|
|
RUN cargo install cargo-watch --version 8.5.3 --locked
|
|
|
|
ENV CARGO_HOME=/usr/local/cargo
|
|
ENV CARGO_TARGET_DIR=/app/target
|
|
ENV RUST_BACKTRACE=1
|
|
|
|
WORKDIR /app
|
|
|
|
# `cargo watch -x run` is the standard incremental dev loop. -q quiets
|
|
# the cargo-watch banner; the inner `cargo run` output still streams.
|
|
# We don't pass --release on purpose — debug builds are ~5x faster to
|
|
# compile, which is what dev iteration cares about.
|
|
ENTRYPOINT ["cargo", "watch", "-q", "-w", "src", "-w", "Cargo.toml", "-x", "run"]
|