Dockerfile 3.5 KB

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