Files
chat/Dockerfile
T
2026-08-05 15:56:08 +08:00

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