s6 improvements and docker build changes
This commit is contained in:
+3
-1
@@ -1,2 +1,4 @@
|
||||
.github
|
||||
documents
|
||||
documents
|
||||
docker/Dockerfile
|
||||
docker/classic/Dockerfile
|
||||
@@ -0,0 +1,37 @@
|
||||
name: Bug Report
|
||||
description: File a bug report
|
||||
title: "[Bug]: "
|
||||
labels: ["bug"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thanks for taking the time to fill out this bug report!
|
||||
- type: textarea
|
||||
id: what-happened
|
||||
attributes:
|
||||
label: What happened?
|
||||
description: Also, what did you expect to happen?
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: logs
|
||||
attributes:
|
||||
label: Relevant log output
|
||||
description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
|
||||
render: shell
|
||||
- type: textarea
|
||||
id: version
|
||||
attributes:
|
||||
label: Version?
|
||||
description: What version of Shairport Sync are you running? (`shairport-sync -V`)
|
||||
validations:
|
||||
required: true
|
||||
- type: checkboxes
|
||||
id: checked-current-issues
|
||||
attributes:
|
||||
label: Check previous issues
|
||||
description: Please check previous issues (including closed ones) for duplicates.
|
||||
options:
|
||||
- label: Confirm
|
||||
required: true
|
||||
@@ -0,0 +1,8 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: Questions?
|
||||
url: https://github.com/mikebrady/shairport-sync/discussions/categories/q-a
|
||||
about: Please ask and answer questions here.
|
||||
- name: Feature Requests
|
||||
url: https://github.com/mikebrady/shairport-sync/discussions/categories/ideas
|
||||
about: Please submit feature requests/enhancements here.
|
||||
@@ -1,5 +1,5 @@
|
||||
# Builds & pushes a docker image when a commit is made to one of the branches specified below.
|
||||
# Tag pattern: 'unstable-[BRANCH NAME]' & 'unstable-[BRANCH NAME]-airplay1'
|
||||
# Tag pattern: 'unstable-[BRANCH NAME]' & 'unstable-[BRANCH NAME]-classic'
|
||||
|
||||
name: Build and push docker image based on commit to specified branches.
|
||||
|
||||
@@ -43,6 +43,14 @@ jobs:
|
||||
username: ${{ secrets.DOCKER_REGISTRY_USER }}
|
||||
password: ${{ secrets.DOCKER_REGISTRY_TOKEN }}
|
||||
|
||||
- name: Set tag start (part 1).
|
||||
if: ${{ env.SHAIRPORT_SYNC_BRANCH == 'master' }}
|
||||
run: echo "IMAGE_TAG_BASE=unstable" >> $GITHUB_ENV
|
||||
|
||||
- name: Set tag start (part 2).
|
||||
if: ${{ env.SHAIRPORT_SYNC_BRANCH != 'master' }}
|
||||
run: echo "IMAGE_TAG_BASE=unstable-${{ env.SHAIRPORT_SYNC_BRANCH }}" >> $GITHUB_ENV
|
||||
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v2
|
||||
with:
|
||||
@@ -50,7 +58,7 @@ jobs:
|
||||
file: ./docker/Dockerfile
|
||||
platforms: ${{ env.DOCKER_PLATFORMS }}
|
||||
push: true
|
||||
tags: ${{ secrets.DOCKER_IMAGE_NAME }}:unstable-${{ env.SHAIRPORT_SYNC_BRANCH }}
|
||||
tags: ${{ secrets.DOCKER_IMAGE_NAME }}:${{ env.IMAGE_TAG_BASE }}
|
||||
build-args: |
|
||||
SHAIRPORT_SYNC_BRANCH=${{ env.SHAIRPORT_SYNC_BRANCH }}
|
||||
NQPTP_BRANCH=${{ env.NQPTP_BRANCH }}
|
||||
@@ -59,9 +67,9 @@ jobs:
|
||||
uses: docker/build-push-action@v2
|
||||
with:
|
||||
context: ./
|
||||
file: ./docker/airplay1/Dockerfile
|
||||
file: ./docker/classic/Dockerfile
|
||||
platforms: ${{ env.DOCKER_PLATFORMS }}
|
||||
push: true
|
||||
tags: ${{ secrets.DOCKER_IMAGE_NAME }}:unstable-${{ env.SHAIRPORT_SYNC_BRANCH }}-airplay1
|
||||
tags: ${{ secrets.DOCKER_IMAGE_NAME }}:${{ env.IMAGE_TAG_BASE }}-classic
|
||||
build-args: |
|
||||
SHAIRPORT_SYNC_BRANCH=${{ env.SHAIRPORT_SYNC_BRANCH }}
|
||||
@@ -2,7 +2,7 @@
|
||||
# It seems this yaml has to exist on the branch the tag refers to.
|
||||
|
||||
# The following docker tags are created & pushed:
|
||||
# [RELEASE TAG], [RELEASE TAG]-airplay1,
|
||||
# [RELEASE TAG], [RELEASE TAG]-classic,
|
||||
|
||||
name: Build and push docker images on releases.
|
||||
|
||||
@@ -65,13 +65,13 @@ jobs:
|
||||
SHAIRPORT_SYNC_BRANCH=${{ env.SHAIRPORT_SYNC_BRANCH }}
|
||||
NQPTP_BRANCH=${{ env.NQPTP_BRANCH }}
|
||||
|
||||
- name: Build and push (AirPlay 1)
|
||||
- name: Build and push (Classic)
|
||||
uses: docker/build-push-action@v2
|
||||
with:
|
||||
context: ./
|
||||
file: ./docker/airplay1/Dockerfile
|
||||
file: ./docker/classic/Dockerfile
|
||||
platforms: ${{ env.DOCKER_PLATFORMS }}
|
||||
push: true
|
||||
tags: ${{ secrets.DOCKER_IMAGE_NAME }}:${{ env.GIT_TAG }}-airplay1
|
||||
tags: ${{ secrets.DOCKER_IMAGE_NAME }}:${{ env.GIT_TAG }}-classic
|
||||
build-args: |
|
||||
SHAIRPORT_SYNC_BRANCH=${{ env.SHAIRPORT_SYNC_BRANCH }}
|
||||
+1
-1
@@ -14,7 +14,7 @@ Makefile.in
|
||||
aclocal.m4
|
||||
autom4te.cache
|
||||
compile
|
||||
config.*
|
||||
/config.*
|
||||
configure
|
||||
depcomp
|
||||
install-sh
|
||||
|
||||
@@ -9,7 +9,7 @@ Shairport Sync does not support AirPlay video or photo streaming.
|
||||
|
||||
# Quick Start
|
||||
* A building guide is available [here](BUILD.md).
|
||||
* A Docker image is available on the [Docker Hub](https://hub.docker.com/repository/docker/mikebrady/shairport-sync).
|
||||
* A Docker image is available on the [Docker Hub](https://hub.docker.com/r/mikebrady/shairport-sync).
|
||||
* Next Steps and Advanced Topics are [here](ADVANCED%20TOPICS/README.md).
|
||||
* Runtime settings are documented [here](scripts/shairport-sync.conf).
|
||||
* Build configuration options are detailed in [CONFIGURATION FLAGS.md](CONFIGURATION%20FLAGS.md).
|
||||
|
||||
+13
-11
@@ -35,7 +35,7 @@ RUN apk -U add \
|
||||
##### ALAC #####
|
||||
RUN git clone https://github.com/mikebrady/alac
|
||||
WORKDIR /alac
|
||||
RUN autoreconf -fi
|
||||
RUN autoreconf -i
|
||||
RUN ./configure
|
||||
RUN make
|
||||
RUN make install
|
||||
@@ -46,7 +46,7 @@ WORKDIR /
|
||||
RUN git clone https://github.com/mikebrady/nqptp
|
||||
WORKDIR /nqptp
|
||||
RUN git checkout "$NQPTP_BRANCH"
|
||||
RUN autoreconf -fi
|
||||
RUN autoreconf -i
|
||||
RUN ./configure
|
||||
RUN make
|
||||
RUN make install
|
||||
@@ -57,18 +57,19 @@ WORKDIR /
|
||||
WORKDIR /shairport-sync
|
||||
COPY . .
|
||||
RUN git checkout "$SHAIRPORT_SYNC_BRANCH"
|
||||
RUN autoreconf -fi
|
||||
RUN ./configure --sysconfdir=/etc --with-alsa --with-soxr --with-avahi --with-ssl=openssl --with-airplay-2 \
|
||||
WORKDIR /shairport-sync/build
|
||||
RUN autoreconf -i ../
|
||||
RUN ../configure --sysconfdir=/etc --with-alsa --with-soxr --with-avahi --with-ssl=openssl --with-airplay-2 \
|
||||
--with-metadata --with-dummy --with-pipe --with-dbus-interface \
|
||||
--with-stdout --with-mpris-interface --with-mqtt-client \
|
||||
--with-apple-alac --with-convolution
|
||||
RUN make -j
|
||||
RUN make install
|
||||
RUN make -j $(nproc)
|
||||
RUN DESTDIR=install make install
|
||||
WORKDIR /
|
||||
##### SPS END #####
|
||||
|
||||
# Shairport Sync Runtime System
|
||||
FROM crazymax/alpine-s6:3.12-3.0.0.2
|
||||
FROM crazymax/alpine-s6:3.12-3.1.1.2
|
||||
|
||||
RUN apk -U add \
|
||||
alsa-lib \
|
||||
@@ -88,13 +89,14 @@ RUN apk -U add \
|
||||
libgcrypt
|
||||
|
||||
# Copy build files.
|
||||
COPY --from=builder /usr/local/bin/shairport-sync /usr/local/bin/shairport-sync
|
||||
COPY --from=builder /shairport-sync/build/install/usr/local/bin/shairport-sync /usr/local/bin/shairport-sync
|
||||
COPY --from=builder /usr/local/bin/nqptp /usr/local/bin/nqptp
|
||||
COPY --from=builder /usr/local/lib/libalac.* /usr/local/lib/
|
||||
COPY --from=builder /etc/dbus-1/system.d/shairport-sync-dbus.conf /etc/dbus-1/system.d/
|
||||
COPY --from=builder /etc/dbus-1/system.d/shairport-sync-mpris.conf /etc/dbus-1/system.d/
|
||||
COPY --from=builder /shairport-sync/build/install/etc/dbus-1/system.d/shairport-sync-dbus.conf /etc/dbus-1/system.d/
|
||||
COPY --from=builder /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
|
||||
RUN chmod +x /etc/s6-overlay/s6-rc.d/startup/script.sh
|
||||
|
||||
# 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
|
||||
@@ -110,4 +112,4 @@ RUN rm -rf /lib/apk/db/*
|
||||
|
||||
ENTRYPOINT [ "/init" ]
|
||||
|
||||
CMD /usr/local/bin/shairport-sync -vu --statistics
|
||||
CMD [ "/usr/local/bin/shairport-sync", "-v", "--statistics" ]
|
||||
+1
-1
@@ -44,7 +44,7 @@ docker buildx build --platform linux/arm/v7 -f ./docker/Dockerfile --build-arg S
|
||||
|
||||
### AirPlay 1 Only
|
||||
|
||||
The AirPlay1 only dockerfile is in the `airplay1` folder. This also includes the `start.sh` script used by the container. Please note that the AirPlay 1 image built via the AirPlay 2 branch has missing functionality, e.g. it does not work with multiple instances on the same hardware; does not support iTunes for Windows etc.
|
||||
The AirPlay 1 only dockerfile is in the `classic` folder. This also includes the `start.sh` script used by the container. Please note that the AirPlay 1 image built via the AirPlay 2 branch has missing functionality, e.g. it does not work with multiple instances on the same hardware; does not support iTunes for Windows etc.
|
||||
|
||||
### GitHub Action Builds
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ COPY --from=builder-alac /usr/local/lib/libalac.* /usr/local/lib/
|
||||
COPY --from=builder-alac /usr/local/lib/pkgconfig/alac.pc /usr/local/lib/pkgconfig/alac.pc
|
||||
COPY --from=builder-alac /usr/local/include /usr/local/include
|
||||
|
||||
WORKDIR shairport-sync
|
||||
WORKDIR /shairport-sync
|
||||
COPY . .
|
||||
RUN git checkout "$SHAIRPORT_SYNC_BRANCH"
|
||||
RUN autoreconf -fi
|
||||
@@ -80,7 +80,7 @@ RUN apk -U add \
|
||||
libgcc \
|
||||
libgc++
|
||||
|
||||
RUN rm -rf /lib/apk/db/*
|
||||
RUN rm -rf /lib/apk/db/*
|
||||
|
||||
COPY --from=builder-alac /usr/local/lib/libalac.* /usr/local/lib/
|
||||
COPY --from=builder-sps /etc/shairport-sync* /etc/
|
||||
@@ -97,7 +97,7 @@ 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
|
||||
|
||||
COPY ./docker/airplay1/start.sh /
|
||||
COPY ./docker/classic/start.sh /
|
||||
RUN chmod +x /start.sh
|
||||
|
||||
ENTRYPOINT [ "/start.sh" ]
|
||||
@@ -1,3 +1,3 @@
|
||||
# AirPlay 1 Only Docker Image
|
||||
# Classic (AirPlay 1 Only) Docker Image
|
||||
|
||||
See the [Shairport Sync Docker Hub Repo](https://hub.docker.com/r/mikebrady/shairport-sync) for available tags.
|
||||
@@ -0,0 +1,2 @@
|
||||
#!/command/execlineb -S0
|
||||
/run/s6/basedir/bin/halt
|
||||
@@ -1,3 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/command/with-contenv sh
|
||||
rm -rf /var/run/dbus.pid
|
||||
echo "Starting dbus"
|
||||
exec dbus-daemon --system --nofork
|
||||
@@ -0,0 +1,2 @@
|
||||
#!/command/execlineb -S0
|
||||
/run/s6/basedir/bin/halt
|
||||
@@ -1,9 +1,8 @@
|
||||
#!/bin/sh
|
||||
avahi-daemon --check
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Reloading avahi-daemon."
|
||||
exec avahi-daemon --no-chroot --reload
|
||||
else
|
||||
echo "Starting avahi-daemon."
|
||||
exec avahi-daemon --no-chroot
|
||||
fi
|
||||
#!/command/with-contenv sh
|
||||
sleep 5
|
||||
while [ ! -f /var/run/dbus.pid ]; do
|
||||
"dbus is not running, sleeping for 5 seconds before trying to start avahi"
|
||||
sleep 5
|
||||
done
|
||||
echo "Starting avahi"
|
||||
exec avahi-daemon --no-chroot
|
||||
@@ -0,0 +1,2 @@
|
||||
#!/command/execlineb -S0
|
||||
/run/s6/basedir/bin/halt
|
||||
@@ -1,2 +1,3 @@
|
||||
#!/bin/sh
|
||||
#!/command/with-contenv sh
|
||||
echo "Starting nqptp"
|
||||
exec /usr/local/bin/nqptp -v
|
||||
@@ -0,0 +1,2 @@
|
||||
#!/bin/sh
|
||||
echo "STARTING - $(date)"
|
||||
@@ -0,0 +1 @@
|
||||
oneshot
|
||||
@@ -0,0 +1 @@
|
||||
/etc/s6-overlay/s6-rc.d/startup/script.sh
|
||||
Reference in New Issue
Block a user