39 lines
886 B
Docker
39 lines
886 B
Docker
# syntax=docker/dockerfile:experimental
|
|
|
|
FROM golang:1.21-alpine AS builder
|
|
RUN apk add -U --no-cache \
|
|
build-base \
|
|
ca-certificates \
|
|
git \
|
|
sqlite \
|
|
taglib-dev \
|
|
zlib-dev
|
|
WORKDIR /src
|
|
COPY . .
|
|
RUN --mount=type=cache,target=/go/pkg/mod \
|
|
--mount=type=cache,target=/root/.cache/go-build \
|
|
GOOS=linux go build -o gonic cmd/gonic/gonic.go
|
|
|
|
FROM alpine:3.18
|
|
RUN apk add -U --no-cache \
|
|
ffmpeg \
|
|
mpv \
|
|
ca-certificates
|
|
COPY --from=builder \
|
|
/usr/lib/libgcc_s.so.1 \
|
|
/usr/lib/libstdc++.so.6 \
|
|
/usr/lib/libtag.so.1 \
|
|
/usr/lib/
|
|
COPY --from=builder \
|
|
/src/gonic \
|
|
/bin/
|
|
VOLUME ["/cache", "/data", "/music", "/podcasts"]
|
|
EXPOSE 80
|
|
ENV GONIC_DB_PATH /data/gonic.db
|
|
ENV GONIC_LISTEN_ADDR :80
|
|
ENV GONIC_MUSIC_PATH /music
|
|
ENV GONIC_PODCAST_PATH /podcasts
|
|
ENV GONIC_PLAYLISTS_PATH /playlists
|
|
ENV GONIC_CACHE_PATH /cache
|
|
CMD ["gonic"]
|