fox/docker/php/Dockerfile

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"]