diff --git a/Dockerfile b/Dockerfile index eef8bb0..1715822 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,35 +1,58 @@ +################################# +# stage builder: build and test +################################# +FROM php:7-apache-buster AS builder + +RUN curl -sL https://deb.nodesource.com/setup_14.x | bash - + +RUN apt-get update > /dev/null +RUN apt-get install -y git libzip-dev nodejs python2 libgtk2.0-0 libgtk-3-0 libgbm-dev libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 libxtst6 xauth xvfb + +RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer + +RUN docker-php-ext-install zip +RUN docker-php-ext-enable zip + +RUN git clone https://github.com/filegator/filegator.git /var/www/filegator/ +WORKDIR "/var/www/filegator/" +RUN cp configuration_sample.php configuration.php +RUN composer install +RUN composer require league/flysystem-sftp:^1.0 -W +RUN composer require league/flysystem-aws-s3-v3:^1.0 -W +RUN npm install +RUN npm run build +RUN vendor/bin/phpunit +RUN npm run lint +#RUN npm run e2e +RUN rm -rf node_modules frontend tests docs .git* + +################################# +# stage production +################################# FROM php:7-apache-buster -ENV APACHE_DOCUMENT_ROOT=/var/www/filegator/dist/ +RUN apt-get update > /dev/null +RUN apt-get install -y git libzip-dev libldap2-dev -RUN apt-get update > /dev/null && \ - # Install and enable php zip extension - apt-get install -y wget unzip libzip-dev && \ - docker-php-ext-install zip && \ - docker-php-ext-enable zip && \ - # Download and extract latest build - cd /var/www/ && \ - wget https://github.com/filegator/static/raw/master/builds/filegator_latest.zip && \ - unzip filegator_latest.zip && rm filegator_latest.zip && \ - chown -R www-data:www-data filegator/ && \ - chmod -R 775 filegator/ && \ - # configure Apache to use the value of APACHE_DOCUMENT_ROOT as its default Document Root - sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf && \ - sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf && \ - # configure php - mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" && \ - # cleanup apt - apt-get purge -y wget unzip && \ - apt-get autoclean -y && \ - rm -Rf /var/lib/apt/lists/* +RUN docker-php-ext-install zip ldap +RUN docker-php-ext-enable zip ldap + +COPY --from=builder /var/www/filegator /var/www/filegator +RUN chown -R www-data:www-data /var/www/filegator/ +WORKDIR "/var/www/filegator/" +RUN chmod -R g+w private/ +RUN chmod -R g+w repository/ + +ENV APACHE_DOCUMENT_ROOT=/var/www/filegator/dist/ +RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf +RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf +RUN a2enmod rewrite EXPOSE 80 VOLUME /var/www/filegator/repository VOLUME /var/www/filegator/private -WORKDIR "/var/www/filegator/" - USER www-data CMD ["apache2-foreground"]