Skip to content

Instantly share code, notes, and snippets.

@dromer
Last active December 30, 2022 16:06
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dromer/9d3ff97078b234bd9744ad29f387a828 to your computer and use it in GitHub Desktop.
Save dromer/9d3ff97078b234bd9744ad29f387a828 to your computer and use it in GitHub Desktop.
alpine-liquidsoap-video
# LS build container
FROM alpine:edge as ls-build
RUN apk --no-cache add \
gstreamer \
gst-plugins-base \
gst-plugins-good \
gst-plugins-bad \
gst-plugins-ugly \
gst-libav \
ffmpeg \
opam \
make \
gstreamer-dev \
m4 \
ocaml-compiler-libs \
musl-dev \
gst-plugins-base-dev \
gst-plugins-bad-dev \
ffmpeg-dev \
git \
automake \
autoconf
# these are not in 3.11 - so that's why we are on edge, and need the testing repo
RUN apk --no-cache -X http://dl-cdn.alpinelinux.org/alpine/edge/testing add \
frei0r-plugins \
frei0r-plugins-dev \
fdk-aac \
fdk-aac-dev
# install our user
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
USER appuser
RUN opam init --disable-sandboxing
RUN test -r /home/appuser/.opam/opam-init/init.sh && . /home/appuser/.opam/opam-init/init.sh > /dev/null 2> /dev/null || true
RUN opam pin add -y fdkaac https://github.com/savonet/ocaml-fdkaac.git
RUN opam pin add -y gstreamer https://github.com/savonet/ocaml-gstreamer.git
RUN opam update && \
opam install -y \
duppy \
frei0r \
gstreamer \
fdkaac \
ffmpeg \
liquidsoap
# crude cleanup
RUN rm -r \
/home/appuser/.opam/default/.opam-switch \
/home/appuser/.opam/default/lib/base \
/home/appuser/.opam/default/lib/ocaml-migrate-parsetree \
/home/appuser/.opam/default/lib/sedlex \
/home/appuser/.opam/default/lib/ppx_tools_versioned \
/home/appuser/.opam/default/lib/dune-private-libs \
/home/appuser/.opam/default/lib/pcre \
/home/appuser/.opam/default/lib/mm \
/home/appuser/.opam/default/lib/dtools \
/home/appuser/.opam/default/lib/ocamlbuild \
/home/appuser/.opam/default/lib/findlib \
/home/appuser/.opam/default/lib/gen \
/home/appuser/.opam/default/lib/menhirLib \
/home/appuser/.opam/default/bin/dune \
/home/appuser/.opam/default/bin/ocamlfind \
/home/appuser/.opam/default/bin/menhir \
/home/appuser/.opam/default/bin/ocamlbuild.native \
/home/appuser/.opam/default/bin/ocamlbuild \
/home/appuser/.opam/default/doc \
/home/appuser/.opam/repo \
/home/appuser/.opam/download-cache
# LS container
FROM alpine:edge as liquidsoap
RUN apk --no-cache add \
gstreamer \
gst-plugins-base \
gst-plugins-good \
gst-plugins-bad \
gst-plugins-ugly \
gst-libav \
ffmpeg \
gstreamer-tools \
faac \
librtmp
RUN apk --no-cache -X http://dl-cdn.alpinelinux.org/alpine/edge/testing add \
frei0r-plugins \
fdk-aac
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
USER appuser
COPY --from=ls-build /home/appuser/.opam /home/appuser/.opam
WORKDIR /app
COPY playlist.liq .
CMD ["/home/appuser/.opam/default/bin/liquidsoap", "playlist.liq"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment