Files
pipu-music/services/api/Dockerfile
T
mrleo1nid a6c9fd8a00
ci / api / api (push) Successful in 50s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 1m0s
ci / db / db (push) Successful in 58s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m27s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 1m39s
ci / ts / ts (packages + web) (push) Successful in 2m40s
fix(ui): reflect update availability and config changes; expand mobile player metadata
2026-10-23 00:20:59 +03:00

32 lines
1.6 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# syntax=docker/dockerfile:1
# Сборка из корня репозитория:
# docker build -f services/api/Dockerfile --target api --build-arg VERSION=1.2.3 .
# docker build -f services/api/Dockerfile --target storage-agent --build-arg VERSION=1.2.3 .
FROM golang:1.24-alpine AS build
WORKDIR /src
COPY services/api/go.mod services/api/go.sum ./
RUN --mount=type=cache,target=/go/pkg/mod go mod download
COPY services/api/ ./
ARG VERSION=0.0.0-dev
ARG REVISION=
ENV CGO_ENABLED=0
RUN --mount=type=cache,target=/go/pkg/mod --mount=type=cache,target=/root/.cache/go-build \
go build -trimpath -ldflags "-s -w -X pipu/api/internal/buildinfo.Version=${VERSION} -X pipu/api/internal/buildinfo.Revision=${REVISION}" -o /out/api ./cmd/api && \
go build -trimpath -ldflags "-s -w -X pipu/api/internal/buildinfo.Version=${VERSION} -X pipu/api/internal/buildinfo.Revision=${REVISION}" -o /out/storage-agent ./cmd/storage-agent
# api вызывает ffprobe (сканер), ffmpeg (транскодинг, M3) и fpcalc (отпечатки, M5.5) — нужен не distroless, а alpine.
FROM alpine:3.22 AS api
RUN apk add --no-cache ffmpeg chromaprint ca-certificates tzdata
COPY --from=build /out/api /usr/local/bin/api
USER 65532:65532
EXPOSE 8080
ENTRYPOINT ["/usr/local/bin/api"]
# Агенту нужны nfs-utils для mount -t nfs и root внутри контейнера (CAP_SYS_ADMIN задаётся в compose).
FROM alpine:3.22 AS storage-agent
RUN apk add --no-cache nfs-utils ca-certificates
COPY --from=build /out/storage-agent /usr/local/bin/storage-agent
EXPOSE 8090
ENTRYPOINT ["/usr/local/bin/storage-agent"]