browsh/Dockerfile

81 wiersze
1.8 KiB
Docker

FROM bitnami/minideb:stretch 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
# Install Golang
ENV GOROOT=/go
ENV GOPATH=/go-home
ENV PATH=$GOROOT/bin:$GOPATH/bin:$PATH
RUN curl -L -o go.tar.gz https://dl.google.com/go/go1.9.2.linux-amd64.tar.gz
RUN mkdir -p $GOPATH/bin
RUN tar -C / -xzf go.tar.gz
ENV BASE=$GOPATH/src/browsh/interfacer
WORKDIR $BASE
ADD interfacer $BASE
# Build Browsh
RUN $BASE/contrib/build_browsh.sh
###########################
# Actual final Docker image
###########################
FROM bitnami/minideb:stretch
ENV HOME=/app
WORKDIR /app
COPY --from=build /go-home/src/browsh/interfacer/browsh /app/browsh
RUN install_packages \
xvfb \
libgtk-3-0 \
curl \
ca-certificates \
bzip2 \
libdbus-glib-1-2 \
procps
# 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
# Setup Firefox
ENV PATH="${HOME}/bin/firefox:${PATH}"
ADD .travis.yml .
ADD interfacer/contrib/setup_firefox.sh .
RUN ./setup_firefox.sh
RUN rm setup_firefox.sh && rm .travis.yml
# 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/browsh" \
/dev/null \
>/dev/null & \
sleep 10
CMD ["/app/browsh"]