-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathDockerfile
147 lines (132 loc) · 5.07 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# An extra layer to get around this bug https://github.com/docker/buildx/issues/395
# It's there simply to download and add required libraries for cargo build
FROM --platform=$BUILDPLATFORM rust:1.75.0-buster AS rust_fix
# standard version
ARG VERSION=v0.3.5
ENV USER=root
ENV V_SPOTIFYD=${VERSION}
WORKDIR /usr/src/spotifyd
RUN apt-get -y update && \
apt-get install --no-install-recommends -y apt-transport-https ca-certificates git && \
git clone --depth 1 https://github.com/Spotifyd/spotifyd.git . && \
git checkout -b ${V_SPOTIFYD}
# Don't do `cargo init` or --> error: `cargo init` cannot be run on existing Cargo packages
# RUN cargo init
RUN mkdir -p .cargo \
&& cargo vendor > .cargo/config
###
# Base build image building the barebones spotifyd client which is alsa
###
FROM rust:1.75.0-buster AS alsa-build
RUN apt-get -y update && \
apt-get install --no-install-recommends -y libasound2-dev
COPY --from=rust_fix /usr/src/spotifyd /usr/src/spotifyd
WORKDIR /usr/src/spotifyd
RUN cargo build -j 2 --release --offline
###
# Build image for alsa-dbus
###
FROM alsa-build AS alsa-dbus-build
RUN apt-get -y update && \
apt-get install --no-install-recommends -y libasound2-dev libdbus-1-dev
RUN cargo build -j 2 --release --features dbus_mpris --offline
###
# Build image for pulseaudio
###
FROM alsa-build AS pulseaudio-build
RUN apt-get -y update && \
apt-get install --no-install-recommends -y libasound2-dev build-essential pulseaudio libpulse-dev
RUN cargo build -j 2 --release --features pulseaudio_backend --offline
###
# Build image for pulseaudio-dbus
###
FROM pulseaudio-build AS pulseaudio-dbus-build
RUN apt-get -y update && \
apt-get install --no-install-recommends -y libasound2-dev build-essential pulseaudio libpulse-dev libdbus-1-dev
RUN cargo build -j 2 --release --features pulseaudio_backend,dbus_mpris --offline
###
# Build image for portaudio
###
FROM alsa-build AS portaudio-build
RUN apt-get -y update && \
apt-get install --no-install-recommends -y libasound2-dev build-essential
RUN cargo build -j 2 --release --features pulseaudio_backend --offline
###
# Build image for portaudio-dbus
###
FROM portaudio-build AS portaudio-dbus-build
RUN apt-get -y update && \
apt-get install --no-install-recommends -y libasound2-dev build-essential libdbus-1-dev
RUN cargo build -j 2 --release --features pulseaudio_backend,dbus_mpris --offline
###
# Release image for alsa
###
FROM debian:bookworm-20241223-slim AS alsa-release
RUN apt-get update && \
apt-get install -yqq --no-install-recommends libasound2 && \
rm -rf /var/lib/apt/lists/* && \
groupadd -r spotify && \
useradd --no-log-init -r -g spotify -G audio spotify
COPY --from=alsa-build /usr/src/spotifyd/target/release/spotifyd /usr/bin/
CMD ["/usr/bin/spotifyd", "--no-daemon"]
USER spotify
###
# Release image for alsa-dbus
###
FROM debian:bookworm-20241223-slim AS alsa-dbus-release
RUN apt-get update && \
apt-get install -yqq --no-install-recommends libasound2 dbus libssl3 && \
rm -rf /var/lib/apt/lists/* && \
groupadd -r spotify && \
useradd --no-log-init -r -g spotify -G audio spotify
COPY --from=alsa-dbus-build /usr/src/spotifyd/target/release/spotifyd /usr/bin/
CMD ["dbus-run-session", "/usr/bin/spotifyd", "--no-daemon"]
USER spotify
###
# Release image for pulseaudio
###
FROM debian:bookworm-20241223-slim AS pulseaudio-release
RUN apt-get update && \
apt-get install -yqq --no-install-recommends libasound2 pulseaudio && \
rm -rf /var/lib/apt/lists/* && \
groupadd -r spotify && \
useradd --no-log-init -r -g spotify -G audio spotify
COPY --from=pulseaudio-build /usr/src/spotifyd/target/release/spotifyd /usr/bin/
CMD ["/usr/bin/spotifyd", "--no-daemon"]
USER spotify
###
# Release image for pulseaudio-dbus
###
FROM debian:bookworm-20241223-slim AS pulseaudio-dbus-release
RUN apt-get update && \
apt-get install -yqq --no-install-recommends libasound2 pulseaudio dbus libssl3 && \
rm -rf /var/lib/apt/lists/* && \
groupadd -r spotify && \
useradd --no-log-init -r -g spotify -G audio spotify
COPY --from=pulseaudio-dbus-build /usr/src/spotifyd/target/release/spotifyd /usr/bin/
CMD ["dbus-run-session", "/usr/bin/spotifyd", "--no-daemon"]
USER spotify
###
# Release image for portaudio
###
FROM debian:bookworm-20241223-slim AS portaudio-release
RUN apt-get update && \
apt-get install -yqq --no-install-recommends libasound2 && \
rm -rf /var/lib/apt/lists/* && \
groupadd -r spotify && \
useradd --no-log-init -r -g spotify -G audio spotify
COPY --from=portaudio-build /usr/src/spotifyd/target/release/spotifyd /usr/bin/
CMD ["/usr/bin/spotifyd", "--no-daemon"]
USER spotify
###
# Release image for portaudio-dbus
###
FROM debian:bookworm-20241223-slim AS portaudio-dbus-release
RUN apt-get update && \
apt-get install -yqq --no-install-recommends libasound2 libdbus-1-3 libssl3 && \
rm -rf /var/lib/apt/lists/* && \
groupadd -r spotify && \
useradd --no-log-init -r -g spotify -G audio spotify
COPY --from=portaudio-dbus-build /usr/src/spotifyd/target/release/spotifyd /usr/bin/
CMD ["/usr/bin/spotifyd", "--no-daemon"]
USER spotify