Dockerfile 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. # Container OS should have PHP and Apache already
  2. FROM php:7.4-apache
  3. MAINTAINER at@una.io
  4. # PHP extensions and necessary packages
  5. RUN apt-get update && apt-get install -y \
  6. cron \
  7. libfreetype6-dev \
  8. libjpeg62-turbo-dev \
  9. libmcrypt-dev \
  10. libpng-dev \
  11. libonig-dev \
  12. sendmail sendmail-bin \
  13. unzip \
  14. && docker-php-ext-install -j$(nproc) exif \
  15. && docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr/include/ \
  16. && docker-php-ext-install -j$(nproc) gd \
  17. && docker-php-ext-install -j$(nproc) iconv \
  18. && docker-php-ext-install -j$(nproc) mbstring \
  19. && docker-php-ext-install -j$(nproc) mcrypt \
  20. && docker-php-ext-install -j$(nproc) mysql \
  21. && docker-php-ext-install -j$(nproc) opcache \
  22. && docker-php-ext-install -j$(nproc) pdo \
  23. && docker-php-ext-install -j$(nproc) pdo_mysql \
  24. && docker-php-ext-install -j$(nproc) zip \
  25. && rm -rf /var/lib/apt/lists/*
  26. # User & folder
  27. RUN groupadd -r --gid 2483 www-una \
  28. && useradd -r --uid 2483 -g www-una www-una \
  29. && chown www-una:www-una /var/www/html /var/www
  30. # Unzip package
  31. USER www-una
  32. WORKDIR /var/www/html
  33. ENV UNA_VERSION 11.0.2
  34. # Alternative download URL - https://github.com/unaio/una/releases/download/${UNA_VERSION}/UNA-v.${UNA_VERSION}.zip
  35. RUN curl -fSL "http://ci.una.io/builds/UNA-v.${UNA_VERSION}.zip" -o una.zip \
  36. && unzip -o una.zip \
  37. && rm una.zip \
  38. && mv UNA-v.${UNA_VERSION}/* . \
  39. && mv UNA-v.${UNA_VERSION}/.htaccess . \
  40. && rm -rf "UNA-v.${UNA_VERSION}"
  41. RUN chmod 777 inc cache cache_public logs tmp storage \
  42. && chmod +x plugins/ffmpeg/ffmpeg.exe
  43. # Apache configuration
  44. USER root
  45. RUN echo "memory_limit=192M \n\
  46. post_max_size=100M \n\
  47. upload_max_filesize=100M \n\
  48. error_log=/var/www/php_error.log \n\
  49. error_reporting=E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT \n\
  50. display_errors=Off \n\
  51. log_errors=On \n\
  52. sendmail_path=/usr/sbin/sendmail -t -i \n\
  53. date.timezone=UTC" > /var/www/php.ini && chown www-una:www-una /var/www/php.ini
  54. RUN touch /var/www/php_error.log \
  55. && chown www-una:www-una /var/www/php_error.log \
  56. && chmod 666 /var/www/php_error.log
  57. RUN echo "<VirtualHost *:80> \n\
  58. DocumentRoot /var/www/html \n\
  59. PHPINIDir /var/www \n\
  60. ErrorLog /var/www/error.log \n\
  61. CustomLog /var/www/access.log combined \n\
  62. </VirtualHost>" > /etc/apache2/sites-enabled/una.conf
  63. RUN a2enmod rewrite expires
  64. # Crontab
  65. RUN echo "* * * * * php -c /var/www /var/www/html/periodic/cron.php" > /var/www/crontab \
  66. && chown www-una:www-una /var/www/crontab \
  67. && crontab -u www-una /var/www/crontab
  68. # Expose port
  69. VOLUME /var/www
  70. EXPOSE 80