Dockerfile 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  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. libmagickwand-dev \
  13. libzip-dev \
  14. sendmail sendmail-bin \
  15. unzip \
  16. && docker-php-ext-install -j$(nproc) exif \
  17. && docker-php-ext-configure gd --with-freetype --with-jpeg \
  18. && docker-php-ext-install -j$(nproc) gd \
  19. && docker-php-ext-install -j$(nproc) iconv \
  20. && docker-php-ext-install -j$(nproc) mbstring \
  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. && pecl install mcrypt-1.0.3 \
  26. && docker-php-ext-enable mcrypt \
  27. && pecl install imagick-3.4.4 \
  28. && docker-php-ext-enable imagick \
  29. && rm -rf /var/lib/apt/lists/*
  30. # User & folder
  31. RUN groupadd -r --gid 2483 www-una \
  32. && useradd -r --uid 2483 -g www-una www-una \
  33. && chown www-una:www-una /var/www/html /var/www
  34. # Unzip package
  35. USER www-una
  36. WORKDIR /var/www/html
  37. ENV UNA_VERSION 11.0.3
  38. # Alternative download URL - https://github.com/unaio/una/releases/download/${UNA_VERSION}/UNA-v.${UNA_VERSION}.zip
  39. RUN curl -fSL "http://ci.una.io/builds/UNA-v.${UNA_VERSION}.zip" -o una.zip \
  40. && unzip -o una.zip \
  41. && rm una.zip \
  42. && mv UNA-v.${UNA_VERSION}/* . \
  43. && mv UNA-v.${UNA_VERSION}/.htaccess . \
  44. && rm -rf "UNA-v.${UNA_VERSION}"
  45. RUN chmod 777 inc cache cache_public logs tmp storage \
  46. && chmod +x plugins/ffmpeg/ffmpeg.exe
  47. # Apache configuration
  48. USER root
  49. RUN echo "memory_limit=192M \n\
  50. post_max_size=100M \n\
  51. upload_max_filesize=100M \n\
  52. error_log=/var/www/php_error.log \n\
  53. error_reporting=E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT \n\
  54. display_errors=Off \n\
  55. log_errors=On \n\
  56. sendmail_path=/usr/sbin/sendmail -t -i \n\
  57. date.timezone=UTC" > /var/www/php.ini && chown www-una:www-una /var/www/php.ini
  58. RUN touch /var/www/php_error.log \
  59. && chown www-una:www-una /var/www/php_error.log \
  60. && chmod 666 /var/www/php_error.log
  61. RUN echo "<VirtualHost *:80> \n\
  62. DocumentRoot /var/www/html \n\
  63. PHPINIDir /var/www \n\
  64. ErrorLog /var/www/error.log \n\
  65. CustomLog /var/www/access.log combined \n\
  66. </VirtualHost>" > /etc/apache2/sites-enabled/una.conf
  67. RUN a2enmod rewrite expires
  68. # Crontab
  69. RUN echo "* * * * * php -c /var/www /var/www/html/periodic/cron.php" > /var/www/crontab \
  70. && chown www-una:www-una /var/www/crontab \
  71. && crontab -u www-una /var/www/crontab
  72. # Expose port
  73. VOLUME /var/www
  74. EXPOSE 80