castopod/docker/production/app/Dockerfile

41 lines
1.5 KiB
Docker

FROM docker.io/alpine:3.16 AS ffmpeg-downloader
RUN apk add --no-cache curl && \
curl https://johnvansickle.com/ffmpeg/releases/ffmpeg-5.1.1-amd64-static.tar.xz -o ffmpeg.tar.xz && \
mkdir ffmpeg && \
tar -xJf ffmpeg.tar.xz -C ffmpeg --strip-components 1
FROM docker.io/php:8.1-fpm-alpine3.16
COPY docker/production/app/entrypoint.sh /entrypoint.sh
COPY docker/production/app/uploads.ini /usr/local/etc/php/conf.d/uploads.ini
RUN echo "* * * * * /usr/local/bin/php /opt/castopod/public/index.php scheduled-activities" > /crontab.txt && \
echo "* * * * 10 /usr/local/bin/php /opt/castopod/public/index.php scheduled-video-clips" >> /crontab.txt && \
echo "* * * * * /usr/local/bin/php /opt/castopod/public/index.php scheduled-websub-publish" >> /crontab.txt
RUN apk add --no-cache libpng icu-libs freetype libwebp libjpeg-turbo libxpm ffmpeg && \
apk add --no-cache --virtual .php-ext-build-dep freetype-dev libpng-dev libjpeg-turbo-dev libwebp-dev zlib-dev libxpm-dev icu-dev && \
docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp --with-xpm && \
docker-php-ext-install gd intl mysqli exif && \
docker-php-ext-enable mysqli gd intl exif && \
apk del .php-ext-build-dep
COPY castopod /opt/castopod
COPY --from=ffmpeg-downloader /ffmpeg/ffmpeg /ffmpeg/ffprobe /ffmpeg/qt-faststart /usr/local/bin/
RUN chmod 544 /entrypoint.sh && \
chmod 444 /crontab.txt && \
/usr/bin/crontab /crontab.txt
WORKDIR /opt/castopod
VOLUME /opt/castopod/public/media
EXPOSE 9000
ENTRYPOINT [ "sh", "-c" ]
CMD [ "/entrypoint.sh" ]