65 lines
2.6 KiB
Docker
65 lines
2.6 KiB
Docker
FROM php:8.3-fpm-bookworm
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
git curl unzip ca-certificates gnupg \
|
|
libpq-dev libzip-dev libonig-dev libxml2-dev libcurl4-openssl-dev \
|
|
libicu-dev libpng-dev libjpeg-dev libfreetype6-dev \
|
|
libsodium-dev pkg-config libssl-dev \
|
|
ffmpeg \
|
|
&& install -m 0755 -d /etc/apt/keyrings \
|
|
&& curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg \
|
|
&& chmod a+r /etc/apt/keyrings/docker.gpg \
|
|
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian bookworm stable" > /etc/apt/sources.list.d/docker.list \
|
|
&& apt-get update \
|
|
&& apt-get install -y --no-install-recommends docker-ce-cli \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Piper TTS Binary (rhasspy/piper) - kein apt-Paket, GitHub-Release verwenden
|
|
RUN curl -L https://github.com/rhasspy/piper/releases/download/v1.2.0/piper_amd64.tar.gz \
|
|
| tar -xz -C /usr/local/bin --strip-components=1 \
|
|
&& chmod +x /usr/local/bin/piper
|
|
|
|
RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
|
|
&& docker-php-ext-install -j"$(nproc)" \
|
|
pdo pdo_pgsql pgsql \
|
|
bcmath intl zip gd opcache exif pcntl sodium
|
|
|
|
RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - \
|
|
&& apt-get install -y nodejs \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
RUN pecl install redis && docker-php-ext-enable redis
|
|
|
|
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
|
|
|
|
ARG WWWUSER=1000
|
|
ARG WWWGROUP=1000
|
|
RUN groupadd -g ${WWWGROUP} fox && useradd -u ${WWWUSER} -g fox -m -s /bin/bash fox
|
|
|
|
WORKDIR /var/www
|
|
|
|
# Sticky-Bit auf /tmp damit tempnam() / Logging immer funktioniert
|
|
RUN mkdir -p /tmp && chmod 1777 /tmp
|
|
|
|
# storage + bootstrap/cache an www-data übergeben (Build-time; entrypoint.sh
|
|
# wiederholt das zur Laufzeit, weil Bind-Mounts den Build-State überschreiben)
|
|
RUN mkdir -p /var/www/storage/framework/cache/data \
|
|
/var/www/storage/framework/sessions \
|
|
/var/www/storage/framework/views \
|
|
/var/www/storage/logs \
|
|
/var/www/storage/app/audio \
|
|
/var/www/storage/app/public \
|
|
/var/www/storage/app/voices \
|
|
/var/www/bootstrap/cache \
|
|
&& chown -R www-data:www-data /var/www/storage /var/www/bootstrap/cache \
|
|
&& chmod -R 775 /var/www/storage /var/www/bootstrap/cache
|
|
|
|
COPY docker/php/php.ini /usr/local/etc/php/conf.d/zz-fox.ini
|
|
COPY docker/php/entrypoint.sh /usr/local/bin/entrypoint.sh
|
|
RUN chmod +x /usr/local/bin/entrypoint.sh
|
|
|
|
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
|
|
CMD ["php-fpm"]
|