Containerfile
Raw
1# Multi-stage build for the WebRTC signaling server.
2# Stage 1: compile signal.c statically against musl so the runtime image
3# doesn't need libc at all.
4FROM docker.io/library/alpine:3.20 AS build
5RUN apk add --no-cache gcc musl-dev
6WORKDIR /src
7COPY server/signal.c ./
8RUN cc -O3 -Wall -Wextra -Werror -static signal.c -o signal
9
10# Stage 2: minimal runtime. Keep alpine (instead of scratch) so the
11# entrypoint can use /bin/sh + cp to publish index.html into the bind-
12# mounted /static directory on startup.
13FROM docker.io/library/alpine:3.20
14RUN apk add --no-cache curl
15COPY --from=build /src/signal /usr/local/bin/signal
16COPY index.html /opt/static/index.html
17COPY entrypoint.sh /usr/local/bin/entrypoint.sh
18RUN chmod +x /usr/local/bin/entrypoint.sh
19EXPOSE 8080
20ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
21