v1.0.4 - init version
This commit is contained in:
76
Dockerfile
Normal file
76
Dockerfile
Normal file
@@ -0,0 +1,76 @@
|
||||
# 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++
|
||||
|
||||
# Установка 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"]
|
||||
|
||||
Reference in New Issue
Block a user