Dockerfile 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. # Container OS should have PHP and Apache already
  2. FROM php:8.2-apache
  3. MAINTAINER at@una.io
  4. USER root
  5. # PHP extensions and necessary packages
  6. RUN apt-get update && apt-get install -y \
  7. cron \
  8. libfreetype6-dev \
  9. libjpeg62-turbo-dev \
  10. libmcrypt-dev \
  11. libpng-dev \
  12. libwebp-dev \
  13. libonig-dev \
  14. libmagickwand-dev \
  15. libzip-dev \
  16. sendmail sendmail-bin \
  17. unzip \
  18. && docker-php-ext-install -j$(nproc) exif \
  19. && docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp \
  20. && docker-php-ext-install -j$(nproc) gd \
  21. && docker-php-ext-install -j$(nproc) iconv \
  22. && docker-php-ext-install -j$(nproc) mbstring \
  23. && docker-php-ext-install -j$(nproc) opcache \
  24. && docker-php-ext-install -j$(nproc) pdo \
  25. && docker-php-ext-install -j$(nproc) pdo_mysql \
  26. && docker-php-ext-install -j$(nproc) zip \
  27. && pecl install mcrypt-1.0.6 \
  28. && docker-php-ext-enable mcrypt \
  29. && pecl install imagick \
  30. && docker-php-ext-enable imagick \
  31. && rm -rf /var/lib/apt/lists/*
  32. # User & folder
  33. RUN groupadd -r --gid 2483 www-una \
  34. && useradd -r --uid 2483 -g www-una www-una \
  35. && chown www-una:www-una /var/www/html /var/www
  36. # Apache configuration
  37. ENV APACHE_RUN_USER www-una
  38. ENV APACHE_RUN_GROUP www-una
  39. RUN echo "memory_limit=192M \n\
  40. post_max_size=100M \n\
  41. upload_max_filesize=100M \n\
  42. error_log=/var/log/php/error.log \n\
  43. error_reporting=E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT \n\
  44. display_errors=Off \n\
  45. log_errors=On \n\
  46. sendmail_path=/usr/sbin/sendmail -t -i \n\
  47. date.timezone=UTC" > /var/www/php.ini && chown www-una:www-una /var/www/php.ini
  48. RUN mkdir /var/log/php && mkdir /var/www/ssl && chown www-una:www-una /var/log/php && chmod 777 /var/log/php && su www-una -c "ln -s /dev/stderr /var/log/php/error.log"
  49. RUN echo "<VirtualHost *:80> \n\
  50. DocumentRoot /var/www/html \n\
  51. PHPINIDir /var/www \n\
  52. ErrorLog /var/www/error.log \n\
  53. CustomLog /var/www/access.log combined \n\
  54. </VirtualHost>" > /etc/apache2/sites-available/una_http.conf; \
  55. echo "<VirtualHost *:80> \n\
  56. RewriteEngine On \n\
  57. RewriteCond %{HTTPS} !=on \n\
  58. RewriteRule ^/(.*) https://%{SERVER_NAME}/\$1 [R,L] \n\
  59. </VirtualHost>" > /etc/apache2/sites-available/una_http_redir.conf; \
  60. echo "<VirtualHost *:443> \n\
  61. Alias /.well-known /var/www/html/.well-known \n\
  62. SSLCertificateFile /var/www/ssl/cert.pem \n\
  63. SSLCertificateKeyFile /var/www/ssl/privkey.pem \n\
  64. SSLCertificateChainFile /var/www/ssl/fullchain.pem \n\
  65. SSLEngine on \n\
  66. Protocols h2 http/1.1 \n\
  67. DocumentRoot /var/www/html \n\
  68. PHPINIDir /var/www \n\
  69. ErrorLog /var/www/error.log \n\
  70. CustomLog /var/www/access.log combined \n\
  71. </VirtualHost>" > /etc/apache2/sites-available/una_https.conf; \
  72. ln -s /etc/apache2/sites-available/una_http.conf /etc/apache2/sites-enabled/una_http.conf
  73. # ln -s /etc/apache2/sites-available/una_https.conf /etc/apache2/sites-enabled/una_https.conf; ln -s /etc/apache2/sites-available/una_http_redir.conf /etc/apache2/sites-enabled/una_http_redir.conf
  74. RUN a2enmod rewrite expires ssl
  75. # Expose port and set volume
  76. WORKDIR /var/www/html
  77. VOLUME /var/www
  78. EXPOSE 80
  79. # Entrypoint
  80. COPY docker-entrypoint.sh /usr/local/bin/
  81. ENTRYPOINT ["docker-entrypoint.sh"]
  82. CMD ["apache2-foreground"]