]> jfr.im git - uguu.git/blobdiff - docker/Dockerfile
fix multiple uploads in same request
[uguu.git] / docker / Dockerfile
index fe8724e7c7cb32584935fef7e002c6757abc2368..377801baa38630de306e861243672aeea572a8aa 100644 (file)
@@ -1,42 +1,96 @@
-FROM ubuntu:latest
+FROM --platform=linux/amd64 debian:bullseye-slim
 
-ARG VERSION
+# Install needed software
+RUN apt-get update
+RUN apt-get install -y lsb-release ca-certificates apt-transport-https software-properties-common gnupg2 curl cron socat
+RUN echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/sury-php.list
+RUN curl -fsSL  https://packages.sury.org/php/apt.gpg| gpg --dearmor -o /etc/apt/trusted.gpg.d/sury-keyring.gpg
+RUN apt-get update
+RUN apt-get upgrade -y
+RUN curl -o nodejssetup.sh https://deb.nodesource.com/setup_19.x
+RUN chmod a+x nodejssetup.sh
+RUN ./nodejssetup.sh
+RUN apt-get install -y nodejs gcc g++ make
+RUN apt-get install -y build-essential nginx-full php8.1-fpm php8.1 sqlite3 php8.1-sqlite3 \
+                       php8.1-curl php8.1-cli php8.1-lz4 php8.1-pgsql \
+                       php8.1-mcrypt php8.1-mysql php8.1-xdebug php8.1-zip \
+                       php8.1-common php8.1-readline php8.1-bcmath php8.1-common php8.1-xml
 
-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 
+# Set ENV values for configuration
+ARG DOMAIN
+ENV DOMAIN=$DOMAIN
 
+ARG FILE_DOMAIN
+ENV FILE_DOMAIN=$FILE_DOMAIN
+
+ARG CONTACT_EMAIL
+ENV CONTACT_EMAIL=$CONTACT_EMAIL
+
+ARG MAX_SIZE
+ENV MAX_SIZE=$MAX_SIZE
+
+ARG EXPIRE_TIME
+ENV EXPIRE_TIME=$EXPIRE_TIME
+
+# Set default workdir
 WORKDIR  /var/www/
 
 COPY docker/docker-entrypoint.sh .
 
-ADD https://github.com/nokonoko/Uguu/archive/refs/tags/v${VERSION}.tar.gz v${VERSION}.tar.gz
+# Decompress into Docker
+COPY docker/uguuForDocker.tar.gz /var/www/
+RUN mkdir /var/www/uguu
+RUN tar -xvf uguuForDocker.tar.gz -C uguu
 
-RUN tar xvf v${VERSION}.tar.gz && \
-    mv Uguu-${VERSION}/ uguu
+# Create the needed directories
+RUN mkdir /var/www/files && \
+    mkdir /var/www/db
 
-RUN mkdir /var/www/uguu/dist && \
-    mkdir /var/www/db && \
-    mkdir /var/www/files
-    
-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 && \
+# Create the Sqlite DB
+RUN sqlite3 /var/www/db/uguu.sq3 -init /var/www/uguu/src/static/dbSchemas/sqlite_schema.sql "" && \
+    chown -R www-data:www-data /var/www && \
     chmod -R 775 /var/www/
 
-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 
+# Add scripts to cron
+RUN echo "0,30 * * * * bash /var/www/uguu/src/static/scripts/checkfiles.sh" >> /var/spool/cron/crontabs/www-data && \
+    echo "0,30 * * * * bash /var/www/uguu/src/static/scripts/checkdb.sh" >> /var/spool/cron/crontabs/www-data
+
+# Fix script paths
+RUN chmod a+x /var/www/uguu/src/static/scripts/checkdb.sh && \
+    chmod a+x /var/www/uguu/src/static/scripts/checkfiles.sh && \
+    sed -i 's#/path/to/files/#/var/www/uguu/files/#g' /var/www/uguu/src/static/scripts/checkfiles.sh && \
+    sed -i 's#/path/to/db/uguu.sq3#/var/www/db/uguu.sq3#g' /var/www/uguu/src/static/scripts/checkdb.sh
+
+# Copy Nginx Server conf
+COPY docker/nginx/uguu.conf /etc/nginx/sites-enabled/uguu.conf
+COPY docker/nginx/nginx.conf /etc/nginx/nginx.conf
 
-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 
+# Modify expire time
+RUN sed -i "s#XXX#${EXPIRE_TIME}#g" /var/www/uguu/src/static/scripts/checkfiles.sh
+RUN sed -i "s#XXX#${EXPIRE_TIME}#g" /var/www/uguu/src/static/scripts/checkdb.sh
 
+# Modify nginx values
+RUN sed -i "s#XMAINDOMAINX#${DOMAIN}#g" /etc/nginx/sites-enabled/uguu.conf
+RUN sed -i "s#XFILESDOMAINX#${FILE_DOMAIN}#g" /etc/nginx/sites-enabled/uguu.conf
+RUN sed -i "s#client_max_body_size 128M#client_max_body_size ${MAX_SIZE}M#g" /etc/nginx/nginx.conf
+
+# Modify php-fpm values
+RUN sed -i "s#post_max_size = 8M#post_max_size = ${MAX_SIZE}M#g" /etc/php/8.1/fpm/php.ini
+RUN sed -i "s#upload_max_filesize = 2M#upload_max_filesize = ${MAX_SIZE}M#g" /etc/php/8.1/fpm/php.ini
+
+# Copy Uguu config
+COPY src/config.json /var/www/uguu/config.json
+
+# Expose port 80 from the container
 EXPOSE 80
 
+# Expose port 443 from the container
+EXPOSE 443
+
+# Install acme.sh
+RUN curl -o acmeinstall.sh https://get.acme.sh
+RUN chmod a+x acmeinstall.sh
+RUN ./acmeinstall.sh
+
+# Load entrypoint
 ENTRYPOINT [ "bash", "/var/www/docker-entrypoint.sh" ]