@@ -11,9 +11,11 @@ RUN bun install --frozen-lockfile --production && \
1111 rm -rf ~/.bun/install/cache /tmp/*
1212
1313# well-known OSS docker image
14- FROM chromedp/headless-shell:143.0.7445.3 AS final
14+ FROM chromedp/headless-shell:143.0.7445.3 AS chromedp
1515
16- # install fonts only
16+ ARG TARGETARCH
17+
18+ # install required packages
1719RUN apt-get update && \
1820 apt-get install -y --no-install-recommends \
1921 tini \
@@ -24,10 +26,53 @@ RUN apt-get update && \
2426 apt-get clean && \
2527 rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /var/cache/apt/archives/*
2628
27- # copy bun from debian base above!
29+ # cleanup unnecessary files
30+ # based on target architecture
31+ RUN ARCH=$(case ${TARGETARCH} in \
32+ amd64) echo "x86_64-linux-gnu" ;; \
33+ arm64) echo "aarch64-linux-gnu" ;; \
34+ *) echo "aarch64-linux-gnu" ;; \
35+ esac) && \
36+ \
37+ rm -rf \
38+ /usr/lib/${ARCH}/gconv/* \
39+ /usr/lib/${ARCH}/security/* \
40+ /usr/share/zoneinfo/* \
41+ /usr/lib/apt/* \
42+ /usr/lib/${ARCH}/perl-base \
43+ /usr/share/perl5 \
44+ /usr/share/doc \
45+ /usr/share/bash-completion && \
46+ \
47+ rm -f \
48+ /usr/bin/apt* \
49+ /usr/bin/dpkg* \
50+ /usr/bin/bash \
51+ /usr/bin/perl* \
52+ /usr/bin/openssl \
53+ /usr/bin/sqv \
54+ /usr/bin/tini-static && \
55+ \
56+ rm -f \
57+ /usr/lib/${ARCH}/libapt-pkg.so.* \
58+ /usr/lib/${ARCH}/libapt-private.so.* \
59+ /usr/lib/${ARCH}/libcrypto.so.* \
60+ /usr/lib/${ARCH}/libssl.so.* \
61+ /usr/lib/${ARCH}/libdb-5.3.so
62+
63+ # cleanup swiftshader
64+ # NOTE: comment out if causes issues
65+ RUN rm -f \
66+ /headless-shell/libvk_swiftshader.so \
67+ /headless-shell/vk_swiftshader_icd.json \
68+ /headless-shell/run.sh
69+
70+ # squash layers
71+ FROM scratch AS final
72+ COPY --from=chromedp / /
2873COPY --from=base /usr/local/bin/bun /usr/local/bin/bun
2974
30- # Add chrome user
75+ # add chrome user
3176RUN groupadd -r chrome && useradd -r -g chrome chrome
3277
3378ENV PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 \
0 commit comments