X-Git-Url: https://jfr.im/git/uguu.git/blobdiff_plain/9650e66147da1d307fad3199384499173e332ade..4717c93610536ad5f60b54aba78a07f553c7ebe3:/docker/Dockerfile diff --git a/docker/Dockerfile b/docker/Dockerfile index 2634928..bf9cfb9 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,42 +1,67 @@ -FROM ubuntu:latest +FROM alpine:latest ARG VERSION -RUN apt-get update && \ - apt install -y software-properties-common && \ - add-apt-repository ppa:ondrej/php && \ - apt-get install -y build-essential nginx-full php8.0-fpm php8.0 sqlite3 php8.0-sqlite3 nodejs certbot git npm cron gettext-base && \ - apt clean +# Install the needed software +RUN apk add --no-cache curl nginx php8-fpm php8-sqlite3 php8-opcache sqlite nodejs git npm bash build-base supervisor +# Create the www-data user and group +RUN set -x ; \ + addgroup -g 82 -S www-data ; \ + adduser -u 82 -D -S -G www-data www-data && exit 0 ; exit 1 + +# Link php bin +RUN ln -s /usr/bin/php8 /usr/bin/php + +# Copy supervisor conf file +COPY docker/supervisord.conf /etc/supervisor/conf.d/supervisord.conf + +# Set default workdir WORKDIR /var/www/ COPY docker/docker-entrypoint.sh . +# Download Uguu ADD https://git.pomf.se/Pomf/uguu/archive/v${VERSION}.tar.gz v${VERSION}.tar.gz +RUN tar xvf v${VERSION}.tar.gz -RUN tar xvf v${VERSION}.tar.gz && \ - mv Uguu-${VERSION}/ uguu - +# Create the needed directories RUN mkdir /var/www/uguu/dist && \ mkdir /var/www/db && \ mkdir /var/www/files - + +# Create the Sqlite DB RUN sqlite3 /var/www/db/uguu.sq3 -init /var/www/uguu/sqlite_schema.sql && \ - chown -R www-data:www-data /var/www/db /var/www/files && \ + chown -R www-data:www-data /var/www && \ chmod -R 775 /var/www/ +# Fix script paths RUN chmod a+x /var/www/uguu/checkdb.sh && \ chmod a+x /var/www/uguu/checkfiles.sh && \ sed -i 's#/path/to/files/#/var/www/uguu/files/#g' /var/www/uguu/checkfiles.sh && \ - sed -i 's#/path/to/db/uguu.sq3#/var/www/db/uguu.sq3#g' /var/www/uguu/checkdb.sh + sed -i 's#/path/to/db/uguu.sq3#/var/www/db/uguu.sq3#g' /var/www/uguu/checkdb.sh + +# Add scripts to cron +RUN echo "0,30 * * * * bash /var/www/uguu/checkfiles.sh" >> /var/spool/cron/crontabs/www-data && \ + echo "0,30 * * * * bash /var/www/uguu/checkdb.sh" >> /var/spool/cron/crontabs/www-data + +# Copy Nginx Server conf +COPY docker/uguu.conf /etc/nginx/http.d/ + +# Copy SSL certs +COPY docker/ssl /etc/ssl + +# Copy Uguu config +COPY dist.json /var/www/uguu/dist.json + +# Give permissions to www-data +RUN chown -R www-data:www-data /run /var/lib/php8 /var/lib/nginx /var/log/nginx /var/log/php8 /etc/nginx /etc/php8 -RUN echo "0,30 * * * * bash /var/www/uguu/checkfiles.sh" >> /var/spool/cron/crontabs/root && \ - echo "0,30 * * * * bash /var/www/uguu/checkdb.sh" >> /var/spool/cron/crontabs/root - -COPY docker/uguu.conf /etc/nginx/conf.d/ - -COPY dist.json /var/www/uguu/_dist.json +# Change user to www-data +USER www-data +# Expose port 80 from the container EXPOSE 80 -ENTRYPOINT [ "bash", "/var/www/docker-entrypoint.sh" ] +# Load entrypoint +ENTRYPOINT [ "bash", "/var/www/docker-entrypoint.sh" ] \ No newline at end of file