Files
go-speech/Dockerfile copy
2025-11-28 17:43:00 +06:00

78 lines
2.3 KiB
Plaintext
Raw Permalink 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.

# Multi-stage build для оптимизации размера образа
# Этап 1: Сборка Go приложения
FROM golang:1.25-alpine AS builder
WORKDIR /build
# Копирование go mod файлов
COPY go.mod ./
RUN go mod download
# Копирование исходного кода
COPY . .
# Сборка приложения
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o go-speech .
# Этап 2: Финальный образ с зависимостями
FROM alpine:latest
# RUN curl -L https://github.com/rhasspy/piper/releases/download/v1.2.0/piper_amd64.tar.gz -o /tmp/piper.tar.gz
COPY piper.tar.gz /tmp/piper.tar.gz
# Установка необходимых пакетов
RUN apk add --no-cache \
ca-certificates \
ffmpeg \
curl \
bash \
libc6-compat \
libstdc++ \
rm -rf /var/lib/apt/lists/*
# Установка Piper TTS
RUN mkdir -p /opt/piper && \
cd /opt/piper && \
tar -xzf /tmp/piper.tar.gz && \
PIPER_BIN=$(find /opt/piper -name "piper" -type f | head -1) && \
chmod +x $PIPER_BIN && \
find /opt/piper -name "*.so*" -type f -exec chmod +x {} \; && \
ln -sf $PIPER_BIN /usr/local/bin/piper && \
rm -f /tmp/piper.tar.gz
# Создание директорий
RUN mkdir -p /app/models /app/certs /app/tmp
COPY models/ /app/models/
# Копирование бинарника из builder
COPY --from=builder /build/go-speech /app/go-speech
# Примечание: Модели должны быть смонтированы через volume при запуске контейнера
# Пример: -v $(pwd)/models:/app/models:ro
# Или скопированы в образ на этапе сборки, если они включены в репозиторий
# Рабочая директория
WORKDIR /app
# Переменные окружения по умолчанию
ENV PORT=8443
ENV PIPER_PATH=/usr/local/bin/piper
ENV PIPER_BIN_PATH=/opt/piper
ENV MODEL_DIR=/app/models
ENV GO_SPEECH_VOICE=ruslan
ENV FFMPEG_PATH=/usr/bin/ffmpeg
ENV CERT_FILE=/app/certs/server.crt
ENV KEY_FILE=/app/certs/server.key
ENV LD_LIBRARY_PATH=/opt/piper:/usr/lib:/usr/local/lib:${LD_LIBRARY_PATH}
# Экспорт порта
EXPOSE 8443
# Запуск приложения
CMD ["./go-speech"]