Dockerfile 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. ARG ARCH=
  2. FROM ${ARCH}alpine:3.15
  3. LABEL Maintainer="kerstin Sieren <kerstin@sieren.biz>" \
  4. Description="Lightweight container with Nginx & PHP-FPM based on Alpine Linux."
  5. # Install packages
  6. RUN apk --no-cache add \
  7. php7 \
  8. php7-fpm \
  9. php7-opcache \
  10. php7-pecl-apcu \
  11. php7-mysqli \
  12. php7-pgsql \
  13. php7-json \
  14. php7-openssl \
  15. php7-curl \
  16. php7-zlib \
  17. php7-soap \
  18. php7-xml \
  19. php7-fileinfo \
  20. php7-phar \
  21. php7-intl \
  22. php7-dom \
  23. php7-xmlrpc \
  24. php7-xmlreader \
  25. php7-xmlwriter \
  26. php7-ctype \
  27. php7-session \
  28. php7-iconv \
  29. php7-tokenizer \
  30. php7-zip \
  31. php7-simplexml \
  32. php7-mbstring \
  33. php7-gd \
  34. php7-imagick \
  35. php7-pecl-mongodb \
  36. php7-pdo_mysql \
  37. php7-pdo_pgsql \
  38. php7-pdo_sqlite \
  39. nginx \
  40. runit \
  41. curl \
  42. tar \
  43. freetype \
  44. libpng \
  45. libjpeg-turbo \
  46. freetype-dev \
  47. libpng-dev \
  48. libjpeg-turbo-dev \
  49. graphicsmagick \
  50. ghostscript \
  51. # Bring in gettext so we can get `envsubst`, then throw
  52. # the rest away. To do this, we need to install `gettext`
  53. # then move `envsubst` out of the way so `gettext` can
  54. # be deleted completely, then move `envsubst` back.
  55. && apk add --no-cache --virtual .gettext gettext \
  56. && mv /usr/bin/envsubst /tmp/ \
  57. && runDeps="$( \
  58. scanelf --needed --nobanner /tmp/envsubst \
  59. | awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \
  60. | sort -u \
  61. | xargs -r apk info --installed \
  62. | sort -u \
  63. )" \
  64. && apk add --no-cache git \
  65. && apk del --no-network \
  66. freetype-dev \
  67. libpng-dev \
  68. libjpeg-turbo-dev \
  69. .gettext \
  70. && mv /tmp/envsubst /usr/local/bin/ \
  71. # Remove alpine cache
  72. && rm -rf /var/cache/apk/* \
  73. # Remove default server definition
  74. && rm /etc/nginx/http.d/default.conf \
  75. # Make sure files/folders needed by the processes are accessable when they run under the nobody user
  76. && chown -R nobody.nobody /run \
  77. && chown -R nobody.nobody /var/lib/nginx \
  78. && chown -R nobody.nobody /var/log/nginx \
  79. && apk add --no-cache git
  80. RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer
  81. # Add configuration files
  82. COPY --chown=nobody rootfs/ /
  83. # Switch to use a non-root user from here on
  84. USER nobody
  85. # Add application
  86. WORKDIR /var/www/html
  87. # Expose the port nginx is reachable on
  88. EXPOSE 8080
  89. # Let runit start nginx & php-fpm
  90. CMD [ "/bin/docker-entrypoint.sh" ]
  91. # Configure a healthcheck to validate that everything is up&running
  92. HEALTHCHECK --timeout=10s CMD curl --silent --fail http://127.0.0.1:8080/fpm-ping
  93. ENV client_max_body_size=5M \
  94. clear_env=no \
  95. allow_url_fopen=On \
  96. allow_url_include=Off \
  97. display_errors=Off \
  98. file_uploads=On \
  99. max_execution_time=240 \
  100. max_input_time=-1 \
  101. max_input_vars=1500 \
  102. memory_limit=-1 \
  103. post_max_size=32M \
  104. upload_max_filesize=25M \
  105. variables_order="EGPCS" \
  106. zlib.output_compression=On