-
Notifications
You must be signed in to change notification settings - Fork 24
Expand file tree
/
Copy pathDockerfile
More file actions
54 lines (38 loc) · 1.25 KB
/
Dockerfile
File metadata and controls
54 lines (38 loc) · 1.25 KB
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
FROM --platform=$BUILDPLATFORM node:20-alpine AS ui-builder
WORKDIR /app/src/web/frontend
COPY src/web/frontend/package*.json ./
RUN npm ci
COPY src/web/frontend/ ./
RUN npm run build
FROM --platform=$BUILDPLATFORM golang:1.24-alpine AS builder
# Set the working directory
WORKDIR /app
# Copy the Go source code into the container
COPY ./ .
# Copy the built React frontend into the embed path
COPY --from=ui-builder /app/src/web/dist ./src/web/dist
# Build the Go binary based on the target architecture
ARG TARGETARCH
ARG VERSION=dev
RUN GOOS=linux GOARCH=$TARGETARCH go build -ldflags "-X explo/src/config.Version=${VERSION}" -o explo ./src/main/
FROM python:3.12-alpine
# Install runtime deps: libc compat, ffmpeg, yt-dlp, tzdata, shadow for user management, su-exec for user switching
RUN apk add --no-cache \
libc6-compat \
ffmpeg \
yt-dlp \
tzdata \
shadow \
su-exec
# Install ytmusicapi in the container
RUN pip install --no-cache-dir ytmusicapi
# Set working directory
WORKDIR /opt/explo/
# Copy entrypoint, binary, python helper
COPY ./docker/start.sh /start.sh
COPY --from=builder /app/explo .
COPY src/downloader/youtube_music/search_ytmusic.py .
RUN chmod +x /start.sh ./explo
ENV WEB_ADDR=":7288"
EXPOSE 7288
CMD ["/start.sh"]