diff --git a/Dockerfile b/Dockerfile index bced6664f..3c11c03bd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,7 +20,7 @@ FROM mariadb:10.9-jammy AS mariadb # # Final build image # -FROM ubuntu:jammy +FROM ubuntu:jammy AS pre-final ENV TZ="UTC" @@ -34,15 +34,12 @@ COPY --from=go-dependencies /go/bin/centrifugo /usr/local/bin/centrifugo # Run base build process COPY ./util/docker/common /bd_build/ -RUN chmod a+x /bd_build/*.sh \ - && /bd_build/prepare.sh \ - && /bd_build/add_user.sh \ - && /bd_build/cleanup.sh \ +RUN bash /bd_build/prepare.sh \ + && bash /bd_build/add_user.sh \ + && bash /bd_build/cleanup.sh \ && rm -rf /bd_build # Build each set of dependencies in their own step for cacheability. -ARG ARM_FULL_BUILD - COPY ./util/docker/supervisor /bd_build/supervisor/ RUN bash /bd_build/supervisor/setup.sh \ && rm -rf /bd_build/supervisor @@ -63,9 +60,17 @@ COPY ./util/docker/redis /bd_build/redis/ RUN bash /bd_build/redis/setup.sh \ && rm -rf /bd_build/redis +RUN rm -rf /bd_build + +VOLUME ["/var/azuracast/stations", "/var/azuracast/uploads", "/var/azuracast/backups", "/var/azuracast/sftpgo/persist", "/var/azuracast/servers/shoutcast2"] + # -# START Operations as `azuracast` user +# Final build (Just environment vars and squishing the FS) # +FROM ubuntu:jammy AS final + +COPY --from=pre-final / / + USER azuracast WORKDIR /var/azuracast/www @@ -82,19 +87,15 @@ COPY --chown=azuracast:azuracast . . RUN composer dump-autoload --optimize --classmap-authoritative \ && touch /var/azuracast/.docker -VOLUME ["/var/azuracast/stations", "/var/azuracast/uploads", "/var/azuracast/backups", "/var/azuracast/sftpgo/persist", "/var/azuracast/servers/shoutcast2"] -ENV PATH="${PATH}:/var/azuracast/servers/shoutcast2" - -# -# END Operations as `azuracast` user -# USER root EXPOSE 80 2022 EXPOSE 8000-8999 # Sensible default environment variables. -ENV LANG="en_US.UTF-8" \ +ENV TZ="UTC" \ + LANG="en_US.UTF-8" \ + PATH="${PATH}:/var/azuracast/servers/shoutcast2" \ DOCKER_IS_STANDALONE="true" \ APPLICATION_ENV="production" \ MYSQL_HOST="localhost" \ diff --git a/util/docker/stations/liquidsoap/build_as_azuracast.sh b/util/docker/stations/liquidsoap/build_as_azuracast.sh deleted file mode 100644 index 6520080e1..000000000 --- a/util/docker/stations/liquidsoap/build_as_azuracast.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -set -e -set -x - -opam init --disable-sandboxing -a --bare && opam switch create 4.13.1 - -# Pin specific commit of Liquidsoap -# opam pin add --no-action liquidsoap https://github.com/savonet/liquidsoap.git#dee2e1553b87e6343d37df4525025af2bea24da8 - -opam install -y ladspa.0.2.2 ffmpeg.1.1.3 ffmpeg-avutil.1.1.3 ffmpeg-avcodec.1.1.3 ffmpeg-avdevice.1.1.3 \ - ffmpeg-av.1.1.3 ffmpeg-avfilter.1.1.3 ffmpeg-swresample.1.1.3 ffmpeg-swscale.1.1.3 frei0r.0.1.2 \ - samplerate.0.1.6 taglib.0.3.9 mad.0.5.2 faad.0.5.0 fdkaac.0.3.2 lame.0.3.6 vorbis.0.8.0 cry.0.6.7 \ - flac.0.3.0 opus.0.2.1 dtools.0.4.4 duppy.0.9.2 ocurl.0.9.2 ssl.0.5.10 \ - liquidsoap.2.0.4 - -# Have Liquidsoap build its own chroot. -mkdir -p /tmp/liquidsoap - -/var/azuracast/.opam/4.13.1/bin/liquidsoap /bd_build/stations/liquidsoap/build_chroot.liq || true - -# Clear entire OPAM directory -rm -rf /var/azuracast/.opam - -cp -r /tmp/liquidsoap/var/azuracast/.opam /var/azuracast/.opam -rm -rf /tmp/liquidsoap - diff --git a/util/docker/stations/setup/flac.sh b/util/docker/stations/setup/flac.sh deleted file mode 100644 index cb23e7ebd..000000000 --- a/util/docker/stations/setup/flac.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -set -e -set -x - -apt-get install -y --no-install-recommends flac diff --git a/util/docker/stations/setup/liquidsoap.sh b/util/docker/stations/setup/liquidsoap.sh index 35e0d28f7..df713f8c9 100644 --- a/util/docker/stations/setup/liquidsoap.sh +++ b/util/docker/stations/setup/liquidsoap.sh @@ -3,15 +3,16 @@ set -e set -x # Packages required by Liquidsoap -apt-get install -y --no-install-recommends libao-dev libasound2-dev libavcodec-dev libavdevice-dev libavfilter-dev libavformat-dev \ - libavutil-dev libfaad-dev libfdk-aac-dev libflac-dev libfreetype-dev libgd-dev libjack-dev \ - libjpeg-dev liblo-dev libmad0-dev libmagic-dev libmp3lame-dev libopus-dev libpng-dev libportaudio2 \ - libpulse-dev libsamplerate0-dev libsdl2-dev libsdl2-ttf-dev libsdl2-image-dev libshine-dev libsoundtouch-dev libspeex-dev \ - libsrt-openssl-dev libswresample-dev libswscale-dev libtag1-dev libtheora-dev libtiff-dev libx11-dev libxpm-dev \ - bubblewrap ffmpeg +apt-get install -y --no-install-recommends \ + libao4 libfaad2 libfdk-aac2 libgd3 liblo7 libmad0 libmagic1 libportaudio2 \ + libsdl2-image-2.0-0 libsdl2-ttf-2.0-0 libsoundtouch1 libxpm4 \ + libasound2 libavcodec58 libavdevice58 libavfilter7 libavformat58 libavutil56 \ + libpulse0 libsamplerate0 libswresample3 libswscale5 libtag1v5 \ + libsrt1.4-openssl bubblewrap ffmpeg # Optional audio plugins -apt-get install -y --no-install-recommends frei0r-plugins-dev ladspa-sdk multimedia-audio-plugins swh-plugins tap-plugins lsp-plugins-ladspa +apt-get install -y --no-install-recommends frei0r-plugins-dev ladspa-sdk multimedia-audio-plugins swh-plugins \ + tap-plugins lsp-plugins-ladspa # Per-architecture LS installs ARCHITECTURE=amd64 @@ -28,11 +29,3 @@ dpkg -i /tmp/liquidsoap.deb apt-get install -y -f --no-install-recommends rm -f /tmp/liquidsoap.deb ln -s /usr/bin/liquidsoap /usr/local/bin/liquidsoap - -# else -# apt-get install -y --no-install-recommends build-essential libssl-dev libcurl4-openssl-dev m4 ocaml opam autoconf automake -# sudo -u azuracast bash /bd_build/stations/liquidsoap/build_as_azuracast.sh -# ln -s /var/azuracast/.opam/4.13.1/bin/liquidsoap /usr/local/bin/liquidsoap -# chmod a+x /usr/local/bin/liquidsoap -# apt-get purge -y build-essential libssl-dev libcurl4-openssl-dev m4 ocaml opam autoconf automake -# fi diff --git a/util/docker/stations/setup/vorbis.sh b/util/docker/stations/setup/vorbis.sh deleted file mode 100644 index 8aa9d4e66..000000000 --- a/util/docker/stations/setup/vorbis.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -set -e -set -x - -apt-get install -y --no-install-recommends vorbis-tools diff --git a/util/docker/supervisor/setup/supervisor.sh b/util/docker/supervisor/setup/supervisor.sh index b6fe9c80a..85da8fbd8 100644 --- a/util/docker/supervisor/setup/supervisor.sh +++ b/util/docker/supervisor/setup/supervisor.sh @@ -3,7 +3,7 @@ set -e set -x apt-get install -y --no-install-recommends python3-minimal python3-pip -pip3 install setuptools supervisor \ +pip3 install --no-cache-dir setuptools supervisor \ git+https://github.com/coderanger/supervisor-stdout # apt-get install -y --no-install-recommends supervisor