this repo has no description
at main 110 lines 3.1 kB view raw
1FROM rust:1.89-bookworm AS builder 2WORKDIR /app 3 4COPY Cargo.toml Cargo.lock ./ 5COPY src ./src 6 7RUN cargo build --release 8 9FROM debian:bookworm-slim AS sidecar-fetch 10ARG TARGETARCH 11 12RUN arch="${TARGETARCH:-amd64}" \ 13 && test "${arch}" = "amd64" || (echo "full image sidecars currently support linux/amd64 only" >&2 && exit 1) 14 15RUN apt-get update \ 16 && apt-get install -y --no-install-recommends \ 17 ca-certificates \ 18 curl \ 19 jq \ 20 unzip \ 21 && rm -rf /var/lib/apt/lists/* 22 23RUN set -eu; \ 24 mkdir -p /out/sidecar/chromium; \ 25 chromium_manifest_url="https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions-with-downloads.json"; \ 26 chromium_url="$(curl -fsSL "${chromium_manifest_url}" | jq -r '.channels.Stable.downloads["chrome-headless-shell"][] | select(.platform == "linux64") | .url')"; \ 27 test -n "${chromium_url}" && test "${chromium_url}" != "null"; \ 28 curl -fL "${chromium_url}" -o /tmp/chromium.zip; \ 29 unzip -q /tmp/chromium.zip -d /tmp/chromium; \ 30 chromium_source="$(find /tmp/chromium -type f -name chrome-headless-shell | head -n 1)"; \ 31 test -n "${chromium_source}"; \ 32 chromium_root="$(dirname "${chromium_source}")"; \ 33 cp -R "${chromium_root}"/. /out/sidecar/chromium/; \ 34 cp "${chromium_source}" /out/sidecar/chromium/headless_shell; \ 35 chmod +x /out/sidecar/chromium/headless_shell 36 37FROM debian:bookworm-slim AS runtime-base 38WORKDIR /app 39 40RUN apt-get update \ 41 && apt-get install -y --no-install-recommends \ 42 ca-certificates \ 43 fonts-liberation \ 44 libasound2 \ 45 libatk-bridge2.0-0 \ 46 libatk1.0-0 \ 47 libc6 \ 48 libcairo2 \ 49 libcups2 \ 50 libdbus-1-3 \ 51 libdrm2 \ 52 libexpat1 \ 53 libgbm1 \ 54 libglib2.0-0 \ 55 libgtk-3-0 \ 56 libnspr4 \ 57 libnss3 \ 58 libpango-1.0-0 \ 59 libu2f-udev \ 60 libx11-6 \ 61 libx11-xcb1 \ 62 libxcb1 \ 63 libxcomposite1 \ 64 libxcursor1 \ 65 libxdamage1 \ 66 libxext6 \ 67 libxfixes3 \ 68 libxi6 \ 69 libxkbcommon0 \ 70 libxrandr2 \ 71 libxrender1 \ 72 libxshmfence1 \ 73 xdg-utils \ 74 && rm -rf /var/lib/apt/lists/* 75 76COPY --from=builder /app/target/release/browser-stream /usr/local/bin/browser-stream 77COPY docker/entrypoint.sh /usr/local/bin/entrypoint.sh 78RUN chmod +x /usr/local/bin/entrypoint.sh 79 80RUN groupadd --system browserstream \ 81 && useradd --system --gid browserstream --create-home --home-dir /home/browserstream browserstream 82 83ENV RUST_LOG=info 84ENV BROWSER_STREAM_NO_SANDBOX=1 85 86ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] 87 88FROM runtime-base AS full 89COPY --from=sidecar-fetch /out/sidecar /opt/sidecar 90RUN apt-get update \ 91 && apt-get install -y --no-install-recommends \ 92 ffmpeg \ 93 && rm -rf /var/lib/apt/lists/* \ 94 && chown -R browserstream:browserstream /opt/sidecar 95 96ENV BROWSER_STREAM_CHROMIUM_PATH=/opt/sidecar/chromium/headless_shell 97ENV BROWSER_STREAM_FFMPEG_PATH=/usr/bin/ffmpeg 98 99USER browserstream 100 101FROM runtime-base AS slim 102RUN apt-get update \ 103 && apt-get install -y --no-install-recommends \ 104 chromium \ 105 ffmpeg \ 106 && rm -rf /var/lib/apt/lists/* 107 108USER browserstream 109 110FROM slim AS default