Skip to content

Commit

Permalink
shrink instructions to reduce layers build
Browse files Browse the repository at this point in the history
  • Loading branch information
duhow committed Dec 16, 2024
1 parent c6fe951 commit 77e1d28
Showing 1 changed file with 34 additions and 28 deletions.
62 changes: 34 additions & 28 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,28 @@ RUN DESTDIR=install make install
WORKDIR /
##### SPS END #####

##### STATIC FILES #####
FROM scratch AS files

# Add run script that will start SPS
COPY --chmod=755 ./docker/run.sh ./run.sh
COPY ./docker/etc/s6-overlay/s6-rc.d /etc/s6-overlay/s6-rc.d
COPY ./docker/etc/pulse /etc/pulse
##### END STATIC FILES #####

##### BUILD FILES #####
FROM scratch AS build-files

COPY --from=shairport-sync /shairport-sync/build/install/usr/local/bin/shairport-sync /usr/local/bin/shairport-sync
COPY --from=shairport-sync /shairport-sync/build/install/usr/local/share/man/man1 /usr/share/man/man1
COPY --from=nqptp /nqptp/nqptp /usr/local/bin/nqptp
COPY --from=alac /usr/local/lib/libalac.* /usr/local/lib/
COPY --from=shairport-sync /shairport-sync/build/install/etc/shairport-sync.conf /etc/
COPY --from=shairport-sync /shairport-sync/build/install/etc/shairport-sync.conf.sample /etc/
COPY --from=shairport-sync /shairport-sync/build/install/etc/dbus-1/system.d/shairport-sync-dbus.conf /etc/dbus-1/system.d/
COPY --from=shairport-sync /shairport-sync/build/install/etc/dbus-1/system.d/shairport-sync-mpris.conf /etc/dbus-1/system.d/
##### END BUILD FILES #####

# Shairport Sync Runtime System
FROM crazymax/alpine-s6:3.17-3.1.1.2

Expand Down Expand Up @@ -95,39 +117,23 @@ RUN apk -U add \
mandoc \
mosquitto \
popt \
soxr
soxr && \
rm -rfv /lib/apk/db/* && \
rm -rfv /etc/avahi/services/*.service && \
addgroup shairport-sync && \
adduser -D shairport-sync -G shairport-sync && \
addgroup -g 29 docker_audio && \
addgroup shairport-sync docker_audio && \
addgroup shairport-sync audio

# Copy build files.
COPY --from=shairport-sync /shairport-sync/build/install/usr/local/bin/shairport-sync /usr/local/bin/shairport-sync
COPY --from=shairport-sync /shairport-sync/build/install/usr/local/share/man/man1 /usr/share/man/man1
COPY --from=nqptp /nqptp/nqptp /usr/local/bin/nqptp
COPY --from=alac /usr/local/lib/libalac.* /usr/local/lib/
COPY --from=shairport-sync /shairport-sync/build/install/etc/shairport-sync.conf /etc/
COPY --from=shairport-sync /shairport-sync/build/install/etc/shairport-sync.conf.sample /etc/
COPY --from=shairport-sync /shairport-sync/build/install/etc/dbus-1/system.d/shairport-sync-dbus.conf /etc/dbus-1/system.d/
COPY --from=shairport-sync /shairport-sync/build/install/etc/dbus-1/system.d/shairport-sync-mpris.conf /etc/dbus-1/system.d/

COPY ./docker/etc/s6-overlay/s6-rc.d /etc/s6-overlay/s6-rc.d
COPY ./docker/etc/pulse /etc/pulse
RUN chmod +x /etc/s6-overlay/s6-rc.d/01-startup/script.sh
# Remove anything we don't need.
# Remove any statically-defined Avahi services, e.g. SSH and SFTP

# Create non-root user for running the container -- running as the user 'shairport-sync' also allows
# Shairport Sync to provide the D-Bus and MPRIS interfaces within the container

RUN addgroup shairport-sync
RUN adduser -D shairport-sync -G shairport-sync

# Add the shairport-sync user to the pre-existing audio group, which has ID 29, for access to the ALSA stuff
RUN addgroup -g 29 docker_audio && addgroup shairport-sync docker_audio && addgroup shairport-sync audio

# Remove anything we don't need.
RUN rm -rf /lib/apk/db/*

# Remove any statically-defined Avahi services, e.g. SSH and SFTP
RUN rm -rf /etc/avahi/services/*.service

# Add run script that will start SPS
COPY ./docker/run.sh ./run.sh
RUN chmod +x /run.sh
COPY --from=files / /
COPY --from=build-files / /

ENTRYPOINT ["/init","./run.sh"]

0 comments on commit 77e1d28

Please sign in to comment.