fix(docker): unblock image builds on this host
- backend dep-cache stage stubs only main.rs/lib.rs, but Cargo.toml
declares a second [[bin]] crawler at src/bin/crawler.rs, so
`cargo build --locked` aborts ("can't find bin crawler"). Stub it too.
- runtime was debian:bookworm-slim (glibc 2.36) while rust:1-slim now
tracks trixie (glibc 2.41) -> "GLIBC_2.39 not found" at boot. Pin the
runtime to debian:trixie-slim so it matches the builder's glibc.
- frontend healthcheck probed localhost (-> musl picks IPv6 ::1) but the
Node server binds IPv4 0.0.0.0 only -> false "unhealthy". Probe 127.0.0.1.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -24,10 +24,12 @@ COPY --from=builder --chown=node:node /app/package.json ./
|
||||
USER node
|
||||
EXPOSE 3000
|
||||
|
||||
# Alpine's busybox `wget` is the canonical lightweight HTTP probe.
|
||||
# `--spider` doesn't follow redirects; `node build` serves a 200 on
|
||||
# `/` for the homepage so this works without a dedicated /health.
|
||||
# Alpine's busybox `wget` is the canonical lightweight HTTP probe. Probe
|
||||
# 127.0.0.1, not `localhost`: musl resolves `localhost` to IPv6 ::1 first,
|
||||
# but the Node server binds IPv4 0.0.0.0 only, so a localhost probe gets
|
||||
# "connection refused" and the container is wrongly marked unhealthy. Use a
|
||||
# GET (`-O /dev/null`) since `node build` serves 200 on `/`.
|
||||
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
|
||||
CMD wget -q --spider http://localhost:3000/ || exit 1
|
||||
CMD wget -q -O /dev/null http://127.0.0.1:3000/ || exit 1
|
||||
|
||||
CMD ["node", "build"]
|
||||
|
||||
Reference in New Issue
Block a user