Dockerfile 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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. RUN echo "<VirtualHost *:80> \n\
  56. Redirect permanent / "https://%{HTTP_HOST}" \n\
  57. </VirtualHost>" > /etc/apache2/sites-available/una_http_redir.conf; \
  58. echo "<VirtualHost *:443> \n\
  59. Alias /.well-known /var/www/html/.well-known \n\
  60. SSLCertificateFile /var/www/ssl/cert.pem \n\
  61. SSLCertificateKeyFile /var/www/ssl/privkey.pem \n\
  62. SSLCertificateChainFile /var/www/ssl/fullchain.pem \n\
  63. SSLEngine on \n\
  64. Protocols h2 http/1.1 \n\
  65. DocumentRoot /var/www/html \n\
  66. PHPINIDir /var/www \n\
  67. ErrorLog /var/www/error.log \n\
  68. CustomLog /var/www/access.log combined \n\
  69. </VirtualHost>" > /etc/apache2/sites-available/una_https.conf; \
  70. ln -s /etc/apache2/sites-available/una_http.conf /etc/apache2/sites-enabled/una_http.conf
  71. # 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
  72. RUN a2enmod rewrite expires ssl
  73. # Expose port and set volume
  74. WORKDIR /var/www/html
  75. VOLUME /var/www
  76. EXPOSE 80
  77. # Entrypoint
  78. COPY docker-entrypoint.sh /usr/local/bin/
  79. ENTRYPOINT ["docker-entrypoint.sh"]
  80. CMD ["apache2-foreground"]