Dockerfile 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. #+++++++++++++++++++++++++++++++++++++++
  2. # Dockerfile for webdevops/php-official:7.4-alpine
  3. # -- automatically generated --
  4. #+++++++++++++++++++++++++++++++++++++++
  5. # Staged baselayout builder
  6. FROM toolbox AS baselayout
  7. RUN mkdir -p \
  8. /baselayout/sbin \
  9. /baselayout/usr/local/bin \
  10. # Baselayout scripts
  11. && wget -O /tmp/baselayout-install.sh https://raw.githubusercontent.com/webdevops/Docker-Image-Baselayout/master/install.sh \
  12. && sh /tmp/baselayout-install.sh /baselayout \
  13. ## Install go-replace
  14. && wget -O "/baselayout/usr/local/bin/go-replace" "https://github.com/webdevops/goreplace/releases/download/1.1.2/gr-arm64-linux" \
  15. && chmod +x "/baselayout/usr/local/bin/go-replace" \
  16. && "/baselayout/usr/local/bin/go-replace" --version \
  17. # Install gosu
  18. && wget -O "/baselayout/sbin/gosu" "https://github.com/tianon/gosu/releases/download/1.10/gosu-arm64" \
  19. && wget -O "/tmp/gosu.asc" "https://github.com/tianon/gosu/releases/download/1.10/gosu-arm64.asc" \
  20. && export GNUPGHOME="$(mktemp -d)" \
  21. && gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \
  22. && gpg --batch --verify /tmp/gosu.asc "/baselayout/sbin/gosu" \
  23. && rm -rf "$GNUPGHOME" /tmp/gosu.asc \
  24. && chmod +x "/baselayout/sbin/gosu" \
  25. && "/baselayout/sbin/gosu" nobody true
  26. FROM php:7.4-fpm-alpine
  27. LABEL [email protected] \
  28. vendor=WebDevOps.io \
  29. io.webdevops.layout=8 \
  30. io.webdevops.version=1.5.0
  31. ENV TERM="xterm" \
  32. LANG="C.UTF-8" \
  33. LC_ALL="C.UTF-8"
  34. ENV DOCKER_CONF_HOME=/opt/docker/ \
  35. LOG_STDOUT="" \
  36. LOG_STDERR=""
  37. ENV APPLICATION_USER=application \
  38. APPLICATION_GROUP=application \
  39. APPLICATION_PATH=/app \
  40. APPLICATION_UID=1000 \
  41. APPLICATION_GID=1000
  42. ENV PHP_SENDMAIL_PATH="/usr/sbin/sendmail -t -i"
  43. ENV LD_PRELOAD="/usr/lib/preloadable_libiconv.so"
  44. ENV COMPOSER_VERSION="2"
  45. # Baselayout copy (from staged image)
  46. COPY --from=baselayout /baselayout /
  47. COPY conf/ /opt/docker/
  48. RUN set -x \
  49. # Init bootstrap
  50. # Add community
  51. && echo https://dl-4.alpinelinux.org/alpine/v3.11/community/ >> /etc/apk/repositories \
  52. # System update
  53. && /usr/local/bin/apk-upgrade \
  54. # Install base stuff
  55. && apk-install \
  56. bash \
  57. ca-certificates \
  58. openssl \
  59. && update-ca-certificates \
  60. && /usr/local/bin/generate-dockerimage-info \
  61. ## Fix su execution (eg for tests)
  62. && mkdir -p /etc/pam.d/ \
  63. && echo 'auth sufficient pam_rootok.so' >> /etc/pam.d/su
  64. RUN set -x \
  65. # Install services
  66. && chmod +x /opt/docker/bin/* \
  67. && apk-install \
  68. supervisor \
  69. wget \
  70. curl \
  71. vim \
  72. sed \
  73. tzdata \
  74. busybox-suid \
  75. && chmod +s /sbin/gosu \
  76. && docker-run-bootstrap \
  77. && docker-image-cleanup
  78. RUN set -x \
  79. && apk-install shadow \
  80. && apk-install \
  81. # Install common tools
  82. zip \
  83. unzip \
  84. bzip2 \
  85. drill \
  86. ldns \
  87. openssh-client \
  88. rsync \
  89. patch \
  90. git \
  91. && docker-run-bootstrap \
  92. && docker-image-cleanup
  93. RUN set -x \
  94. # Install php environment
  95. && apk-install \
  96. imagemagick \
  97. graphicsmagick \
  98. ghostscript \
  99. jpegoptim \
  100. pngcrush \
  101. optipng \
  102. pngquant \
  103. vips \
  104. rabbitmq-c \
  105. c-client \
  106. # Libraries
  107. libldap \
  108. icu-libs \
  109. libintl \
  110. libpq \
  111. libxslt \
  112. libzip \
  113. libmemcached \
  114. yaml \
  115. # Build dependencies
  116. autoconf \
  117. g++ \
  118. make \
  119. libtool \
  120. pcre-dev \
  121. gettext-dev \
  122. freetype-dev \
  123. libjpeg-turbo-dev \
  124. libpng-dev \
  125. vips-dev \
  126. krb5-dev \
  127. openssl-dev \
  128. imap-dev \
  129. imagemagick-dev \
  130. rabbitmq-c-dev \
  131. openldap-dev \
  132. icu-dev \
  133. postgresql-dev \
  134. libxml2-dev \
  135. ldb-dev \
  136. pcre-dev \
  137. libxslt-dev \
  138. libzip-dev \
  139. libmemcached-dev \
  140. yaml-dev \
  141. # Install guetzli
  142. && wget https://github.com/google/guetzli/archive/master.zip \
  143. && unzip master.zip \
  144. && make -C guetzli-master \
  145. && cp guetzli-master/bin/Release/guetzli /usr/local/bin/ \
  146. && rm -rf master.zip guetzli-master \
  147. # https://github.com/docker-library/php/issues/240
  148. && apk add gnu-libiconv --update-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/testing/ --allow-untrusted \
  149. # Install new version of ICU
  150. && curl -sS -o /tmp/icu.tar.gz -L https://github.com/unicode-org/icu/releases/download/release-66-1/icu4c-66_1-src.tgz \
  151. && tar -zxf /tmp/icu.tar.gz -C /tmp && cd /tmp/icu/source && ./configure --prefix=/usr/local && make && make install && cd / && rm -rf /tmp/icu* \
  152. # Install extensions
  153. && PKG_CONFIG_PATH=/usr/local docker-php-ext-configure intl \
  154. && docker-php-ext-configure gd --with-jpeg --with-freetype --with-webp \
  155. && docker-php-ext-configure ldap \
  156. && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \
  157. && docker-php-ext-install \
  158. bcmath \
  159. bz2 \
  160. calendar \
  161. exif \
  162. ffi \
  163. intl \
  164. gettext \
  165. ldap \
  166. mysqli \
  167. imap \
  168. pcntl \
  169. pdo_mysql \
  170. pdo_pgsql \
  171. pgsql \
  172. soap \
  173. sockets \
  174. tokenizer \
  175. sysvmsg \
  176. sysvsem \
  177. sysvshm \
  178. shmop \
  179. xmlrpc \
  180. xsl \
  181. zip \
  182. gd \
  183. gettext \
  184. opcache \
  185. # Install extensions for PHP 7.x
  186. # Memcached for 7.3 can currently only be built from master
  187. && MEMCACHED="`mktemp -d`" \
  188. && curl -skL https://github.com/php-memcached-dev/php-memcached/archive/master.tar.gz | tar zxf - --strip-components 1 -C $MEMCACHED \
  189. && docker-php-ext-configure $MEMCACHED \
  190. && docker-php-ext-install $MEMCACHED \
  191. && rm -rf $MEMCACHED \
  192. # Install vips (only works with PHP >= 7.0)
  193. && pecl install apcu \
  194. && printf "\n" | pecl install vips \
  195. && pecl install redis \
  196. && pecl install mongodb \
  197. && pecl install imagick \
  198. && pecl install amqp \
  199. && pecl install yaml \
  200. && docker-php-ext-enable \
  201. apcu \
  202. redis \
  203. imagick \
  204. mongodb \
  205. amqp \
  206. vips \
  207. yaml \
  208. # Uninstall dev and header packages
  209. && apk del -f --purge \
  210. autoconf \
  211. g++ \
  212. make \
  213. libtool \
  214. pcre-dev \
  215. gettext-dev \
  216. freetype-dev \
  217. libjpeg-turbo-dev \
  218. libpng-dev \
  219. vips-dev \
  220. krb5-dev \
  221. openssl-dev \
  222. imap-dev \
  223. rabbitmq-c-dev \
  224. imagemagick-dev \
  225. openldap-dev \
  226. icu-dev \
  227. postgresql-dev \
  228. libxml2-dev \
  229. ldb-dev \
  230. pcre-dev \
  231. libxslt-dev \
  232. libzip-dev \
  233. libmemcached-dev \
  234. yaml-dev \
  235. && rm -f /usr/local/etc/php-fpm.d/zz-docker.conf \
  236. && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin/ --filename=composer2 \
  237. && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin/ --filename=composer1 --1 \
  238. && ln -sf /usr/local/bin/composer2 /usr/local/bin/composer \
  239. # Enable php services
  240. && docker-service enable syslog \
  241. && docker-service enable cron \
  242. && docker-run-bootstrap \
  243. && docker-image-cleanup
  244. WORKDIR /
  245. EXPOSE 9000
  246. ENTRYPOINT ["/entrypoint"]
  247. CMD ["supervisord"]