64 lines
2.5 KiB
Docker
64 lines
2.5 KiB
Docker
# syntax=docker/dockerfile:1.7
|
|
|
|
FROM node:22-alpine AS frontend-builder
|
|
WORKDIR /workspace
|
|
|
|
COPY frontend/package.json frontend/package-lock.json ./frontend/
|
|
COPY frontend-admin/package.json frontend-admin/package-lock.json ./frontend-admin/
|
|
RUN --mount=type=cache,target=/root/.npm \
|
|
npm --prefix frontend ci && npm --prefix frontend-admin ci
|
|
|
|
COPY frontend ./frontend
|
|
COPY frontend-admin ./frontend-admin
|
|
COPY scripts ./scripts
|
|
COPY backend/public ./backend/public
|
|
RUN npm --prefix frontend run build && npm --prefix frontend-admin run build
|
|
|
|
FROM php:8.2-fpm-bookworm AS app
|
|
WORKDIR /var/www/backend
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends \
|
|
curl \
|
|
ffmpeg \
|
|
fonts-noto-cjk \
|
|
libfreetype6-dev \
|
|
libjpeg62-turbo-dev \
|
|
libonig-dev \
|
|
libpng-dev \
|
|
libwebp-dev \
|
|
libzip-dev \
|
|
poppler-utils \
|
|
unzip \
|
|
&& docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp \
|
|
&& docker-php-ext-install -j"$(nproc)" gd mbstring pdo_mysql zip \
|
|
&& mkdir -p /usr/local/share/cosyvoice \
|
|
&& curl -fsSL --retry 3 \
|
|
https://raw.githubusercontent.com/FunAudioLLM/CosyVoice/main/asset/zero_shot_prompt.wav \
|
|
-o /usr/local/share/cosyvoice/zero_shot_prompt.wav \
|
|
&& echo "c7b31d6dbe7cc6a716dded00550db5b50940bf209e424e4ad207b12e657c8ff6 /usr/local/share/cosyvoice/zero_shot_prompt.wav" | sha256sum -c - \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
COPY --from=composer:2 /usr/bin/composer /usr/local/bin/composer
|
|
COPY backend/composer.json backend/composer.lock ./
|
|
RUN --mount=type=cache,target=/tmp/composer-cache \
|
|
COMPOSER_CACHE_DIR=/tmp/composer-cache composer install \
|
|
--no-dev --no-interaction --no-progress --prefer-dist \
|
|
--no-scripts --optimize-autoloader
|
|
|
|
COPY backend ./
|
|
COPY --from=frontend-builder /workspace/backend/public ./public
|
|
RUN composer run-script post-autoload-dump --no-interaction \
|
|
&& mkdir -p runtime uploads storage/cosyvoice \
|
|
&& chown -R www-data:www-data runtime uploads storage
|
|
|
|
COPY deploy/docker/php.ini /usr/local/etc/php/conf.d/99-app.ini
|
|
COPY deploy/docker/php-fpm.conf /usr/local/etc/php-fpm.d/zz-app.conf
|
|
COPY deploy/docker/app-entrypoint.sh /usr/local/bin/app-entrypoint
|
|
RUN chmod +x /usr/local/bin/app-entrypoint
|
|
ENTRYPOINT ["app-entrypoint"]
|
|
|
|
FROM nginx:1.28-alpine AS web
|
|
COPY deploy/docker/nginx.conf /etc/nginx/conf.d/default.conf
|
|
COPY --from=frontend-builder /workspace/backend/public /var/www/backend/public
|