12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- FROM bitnami/minideb:bullseye as build
- RUN install_packages \
- curl \
- ca-certificates \
- git \
- autoconf \
- automake \
- g++ \
- protobuf-compiler \
- zlib1g-dev \
- libncurses5-dev \
- libssl-dev \
- pkg-config \
- libprotobuf-dev \
- make \
- bzip2
- # Helper scripts
- WORKDIR /build
- ADD .git .git
- ADD .github .github
- ADD scripts scripts
- ADD ctl.sh .
- # Install Golang and Browsh
- ENV GOROOT=/go
- ENV GOPATH=/go-home
- ENV PATH=$GOROOT/bin:$GOPATH/bin:$PATH
- ENV BASE=$GOPATH/src/browsh/interfacer
- ADD interfacer $BASE
- WORKDIR $BASE
- RUN /build/ctl.sh install_golang $BASE
- RUN /build/ctl.sh build_browsh_binary $BASE
- ###########################
- # Actual final Docker image
- ###########################
- FROM bitnami/minideb:bullseye
- ENV HOME=/app
- WORKDIR $HOME
- COPY --from=build /go-home/src/browsh/interfacer/browsh /app/bin/browsh
- RUN install_packages \
- xvfb \
- libgtk-3-0 \
- curl \
- ca-certificates \
- libdbus-glib-1-2 \
- procps \
- libasound2 \
- libxtst6 \
- firefox-esr
- # Block ads, etc. This includes porn just because this image is also used on the
- # public SSH demo: `ssh brow.sh`.
- RUN curl \
- -o /etc/hosts \
- https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-gambling-porn-social/hosts
- # Don't use root
- RUN useradd -m user --home /app
- RUN chown user:user /app
- USER user
- ENV PATH="${HOME}/bin:${HOME}/bin/firefox:${PATH}"
- # Firefox behaves quite differently to normal on its first run, so by getting
- # that over and done with here when there's no user to be dissapointed means
- # that all future runs will be consistent.
- RUN TERM=xterm script \
- --return \
- -c "/app/bin/browsh" \
- /dev/null \
- >/dev/null & \
- sleep 10
- ENTRYPOINT ["/app/bin/browsh"]
|