Dockerfile 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. # ---- Builder ----
  2. FROM php:8.3-apache AS builder
  3. MAINTAINER at@una.io
  4. USER root
  5. # PHP extensions and necessary packages
  6. RUN apt-get update && apt-get install -y --no-install-recommends \
  7. libfreetype6-dev \
  8. libjpeg62-turbo-dev \
  9. libpng-dev \
  10. libwebp-dev \
  11. libonig-dev \
  12. libmagickwand-dev \
  13. libzip-dev \
  14. && docker-php-ext-install -j$(nproc) exif \
  15. && docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp \
  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) opcache \
  20. && docker-php-ext-install -j$(nproc) pdo \
  21. && docker-php-ext-install -j$(nproc) pdo_mysql \
  22. && docker-php-ext-install -j$(nproc) zip \
  23. && pecl install imagick \
  24. && docker-php-ext-enable imagick \
  25. && rm -rf /var/lib/apt/lists/*
  26. # ---- Runtime ----
  27. FROM php:8.3-apache
  28. RUN apt-get update && apt-get install -y --no-install-recommends \
  29. cron \
  30. libfreetype6 \
  31. libjpeg62-turbo \
  32. libpng16-16 \
  33. libwebp7 \
  34. libonig5 \
  35. imagemagick \
  36. libzip5 \
  37. unzip \
  38. && rm -rf /var/lib/apt/lists/* /tmp/*
  39. # Copy compiled extensions
  40. COPY --from=builder /usr/local/lib/php/extensions/ /usr/local/lib/php/extensions/
  41. COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/
  42. # ENV vars
  43. ENV UNA_USER="www-una" \
  44. VAR_DEF_DB_HOST="localhost" \
  45. VAR_DEF_DB_PORT="3306" \
  46. VAR_DEF_DB_USER="root" \
  47. VAR_DEF_DB_PWD="root" \
  48. VAR_DEF_HTTP_HOST="localhost" \
  49. VAR_DEF_TITLE="UNA" \
  50. VAR_DEF_USERNAME="admin" \
  51. VAR_DEF_ADMIN_PWD="admin" \
  52. VAR_DEF_EMAIL="admin@example.com" \
  53. VAR_DEF_DB_ENGINE="MYISAM" \
  54. VAR_DEF_AUTO_HOSTNAME=0 \
  55. VAR_DEF_VERSION="14.0.0" \
  56. APACHE_RUN_USER=$UNA_USER \
  57. APACHE_RUN_GROUP=$UNA_USER
  58. # User & folder
  59. RUN groupadd -r --gid 2483 $UNA_USER \
  60. && useradd -r --uid 2483 -g $UNA_USER $UNA_USER \
  61. && chown $UNA_USER:$UNA_USER /var/www/html /var/www
  62. # Apache configuration
  63. RUN echo "memory_limit=192M \n\
  64. post_max_size=100M \n\
  65. upload_max_filesize=100M \n\
  66. error_log=/var/log/php/error.log \n\
  67. error_reporting=E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT \n\
  68. display_errors=Off \n\
  69. log_errors=On \n\
  70. date.timezone=UTC" > /usr/local/etc/php/conf.d/una.ini
  71. RUN mkdir /var/log/php && mkdir /var/www/ssl && chown $UNA_USER:$UNA_USER /var/log/php && chmod 777 /var/log/php && su $UNA_USER -c "ln -s /dev/stderr /var/log/php/error.log; ln -s /dev/stderr /var/www/cron.log"
  72. RUN a2enmod rewrite expires ssl
  73. # Expose port and set volume
  74. WORKDIR /var/www/html
  75. COPY header.inc.php /srv/
  76. RUN set -eux; \
  77. su "$UNA_USER" -c "\
  78. curl -fSL \"http://ci.una.io/builds/UNA-v.${VAR_DEF_VERSION}.zip\" -o una.zip && \
  79. unzip -o una.zip && \
  80. rm una.zip && \
  81. mv \"UNA-v.${VAR_DEF_VERSION}\"/* . && \
  82. mv \"UNA-v.${VAR_DEF_VERSION}\"/.htaccess . && \
  83. rm -rf \"UNA-v.${VAR_DEF_VERSION}\" && \
  84. chmod 777 inc cache cache_public logs tmp storage && \
  85. chmod +x plugins/ffmpeg/ffmpeg.exe && \
  86. \\cp -f --no-preserve=mode,ownership /srv/header.inc.php install/patterns/ \
  87. "
  88. VOLUME /var/www
  89. EXPOSE 80
  90. # Entrypoint
  91. COPY docker-entrypoint.sh /usr/local/bin/
  92. ENTRYPOINT ["docker-entrypoint.sh"]
  93. CMD ["apache2-foreground"]