Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 2k
add php:7.0-alpine#176
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Uh oh!
There was an error while loading. Please reload this page.
add php:7.0-alpine #176
Changes from all commits
d30d28d8026863a2e54ec83c10380f95b3729b8ea75acbdadc107bad78ae437b9212a0647490fFile filter
Filter by extension
Conversations
Uh oh!
There was an error while loading. Please reload this page.
Jump to
Uh oh!
There was an error while loading. Please reload this page.
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,70 @@ | ||
| FROM alpine:3.3 | ||
| ENV PHP_INI_DIR /usr/local/etc/php | ||
| RUN mkdir -p $PHP_INI_DIR/conf.d | ||
| ENV PHP_VERSION 5.6.19 | ||
| ENV PHP_FILENAME php-5.6.19.tar.xz | ||
| ENV PHP_SHA256 2a24a3f84971680ac0a4c71050067de4f76ee235aa4a041fae21bfa69975c168 | ||
| ##<autogenerated>## | ||
| ##</autogenerated>## | ||
| # --enable-mysqlnd is included below because it's harder to compile after the fact the extensions are (since it's a plugin for several extensions, not an extension in itself) | ||
| ENV GPG_KEYS 0BD78B5F97500D450838F95DFE857D9A90D90EC1 6E4F6AB321FDC07F2C332E3AC2BF0BC433CFC8B3 | ||
| RUN set -xe \ | ||
| && apk add --no-cache --virtual .build-deps \ | ||
| autoconf \ | ||
| curl-dev \ | ||
| file \ | ||
| gcc \ | ||
| gnupg \ | ||
| libc-dev \ | ||
| libedit-dev \ | ||
| libxml2-dev \ | ||
| make \ | ||
| openssl-dev \ | ||
| pkgconf \ | ||
| re2c \ | ||
| sqlite-dev \ | ||
| && for key in $GPG_KEYS; do \ | ||
| gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \ | ||
| done \ | ||
| && curl -fSL "http://php.net/get/$PHP_FILENAME/from/this/mirror" -o "$PHP_FILENAME" \ | ||
| && echo "$PHP_SHA256 *$PHP_FILENAME" | sha256sum -c - \ | ||
| && curl -fSL "http://php.net/get/$PHP_FILENAME.asc/from/this/mirror" -o "$PHP_FILENAME.asc" \ | ||
| && gpg --batch --verify "$PHP_FILENAME.asc" "$PHP_FILENAME" \ | ||
| && mkdir -p /usr/src \ | ||
| && tar -Jxf "$PHP_FILENAME" -C /usr/src \ | ||
| && mv /usr/src/php-$PHP_VERSION /usr/src/php \ | ||
| && rm "$PHP_FILENAME"* \ | ||
| && cd /usr/src/php \ | ||
| && ./configure \ | ||
| --with-config-file-path="$PHP_INI_DIR" \ | ||
| --with-config-file-scan-dir="$PHP_INI_DIR/conf.d" \ | ||
| $PHP_EXTRA_CONFIGURE_ARGS \ | ||
| --disable-cgi \ | ||
| --enable-mysqlnd \ | ||
| --with-curl \ | ||
| --with-openssl \ | ||
| --with-libedit \ | ||
| --with-zlib \ | ||
| && make -j"$(getconf _NPROCESSORS_ONLN)" \ | ||
| && make install \ | ||
| && { find /usr/local/bin /usr/local/sbin -type f -perm +0111 -exec strip --strip-all '{}' + || true; } \ | ||
| && make clean \ | ||
| && runDeps="$( \ | ||
| scanelf --needed --nobanner --recursive /usr/local \ | ||
| | awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \ | ||
| | sort -u \ | ||
| | xargs -r apk info --installed \ | ||
| | sort -u \ | ||
| )" \ | ||
| && apk add --virtual .php-rundeps $runDeps \ | ||
| && apk del .build-deps | ||
| COPY docker-php-ext-* /usr/local/bin/ | ||
| ##<autogenerated>## | ||
| CMD ["php", "-a"] | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Probably a good idea to have "php" in ENTRYPOINT and "-a" in CMD (see https://www.ctl.io/developers/blog/post/dockerfile-entrypoint-vs-cmd/ => "ENTRYPOINT and CMD" especially) (same for other php versions dockerfiles) Member There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Nope, we want to keep official images consistent so that a Member There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. That is a great article and could be beneficial to many docker users. | ||
| ##</autogenerated>## | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,19 @@ | ||
| #!/bin/sh | ||
| set -e | ||
| ext="$1" | ||
| extDir="/usr/src/php/ext/$ext" | ||
| if [ -z "$ext" ] || ! [ -d "$extDir" ]; then | ||
| echo >&2 "usage: $0 ext-name [configure flags]" | ||
| echo >&2 " ie: $0 gd --with-jpeg-dir=/usr/local/something" | ||
| echo >&2 | ||
| echo >&2 'Possible values for ext-name:' | ||
| echo >&2 $(find /usr/src/php/ext -mindepth 2 -maxdepth 2 -type f -name 'config.m4' | cut -d/ -f6 | sort) | ||
| exit 1 | ||
| fi | ||
| shift | ||
| set -x | ||
| cd "$extDir" | ||
| phpize | ||
| ./configure "$@" |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,61 @@ | ||
| #!/bin/sh | ||
| set -e | ||
| cd "$(php -r 'echo ini_get("extension_dir");')" | ||
| usage() { | ||
| echo "usage: $0 module-name [module-name ...]" | ||
| echo " ie: $0 gd mysqli" | ||
| echo " $0 pdo pdo_mysql" | ||
| echo | ||
| echo 'Possible values for module-name:' | ||
| echo $(find -maxdepth 1 -type f -name '*.so' -exec basename '{}' ';' | sort) | ||
| } | ||
| modules="" | ||
| for module; do | ||
| if [ -z "$module" ]; then | ||
| continue | ||
| fi | ||
| if [ -f "$module.so" ] && ! [ -f "$module" ]; then | ||
| # allow ".so" to be optional | ||
| module="$module.so" | ||
| fi | ||
| if ! [ -f "$module" ]; then | ||
| echo >&2 "error: $(readlink -f "$module") does not exist" | ||
| echo >&2 | ||
| usage >&2 | ||
| exit 1 | ||
| fi | ||
| modules="$modules $module" | ||
| done | ||
| if [ -z "$modules" ]; then | ||
| usage >&2 | ||
| exit 1 | ||
| fi | ||
| for module in ${modules}; do | ||
| if grep -q zend_extension_entry "$module"; then | ||
| # https://wiki.php.net/internals/extensions#loading_zend_extensions | ||
| line="zend_extension=$(readlink -f "$module")" | ||
| else | ||
| line="extension=$module" | ||
| fi | ||
| ext="$(basename "$module")" | ||
| ext="${ext%.*}" | ||
| if php -r 'exit(extension_loaded("'"$ext"'") ? 0 : 1);'; then | ||
| # this isn't perfect, but it's better than nothing | ||
| # (for example, 'opcache.so' presents inside PHP as 'Zend OPcache', not 'opcache') | ||
| echo >&2 | ||
| echo >&2 "warning: $ext ($module) is already loaded!" | ||
| echo >&2 | ||
| continue | ||
| fi | ||
| ini="/usr/local/etc/php/conf.d/docker-php-ext-$ext.ini" | ||
| if ! grep -q "$line" "$ini" 2>/dev/null; then | ||
| echo "$line" >> "$ini" | ||
| fi | ||
| done |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,67 @@ | ||
| #!/bin/sh | ||
| set -e | ||
| cd /usr/src/php/ext | ||
| usage() { | ||
| echo "usage: $0 [-jN] ext-name [ext-name ...]" | ||
| echo " ie: $0 gd mysqli" | ||
| echo " $0 pdo pdo_mysql" | ||
| echo " $0 -j5 gd mbstring mysqli pdo pdo_mysql shmop" | ||
| echo | ||
| echo 'if custom ./configure arguments are necessary, see docker-php-ext-configure' | ||
| echo | ||
| echo 'Possible values for ext-name:' | ||
| echo $(find /usr/src/php/ext -mindepth 2 -maxdepth 2 -type f -name 'config.m4' | cut -d/ -f6 | sort) | ||
| } | ||
| opts="$(getopt -o 'h?j:' --long 'help,jobs:' -- "$@" || { usage >&2 && false; })" | ||
| eval set -- "$opts" | ||
| j=1 | ||
| while true; do | ||
| flag="$1" | ||
| shift | ||
| case "$flag" in | ||
| --help|-h|'-?') usage && exit 0 ;; | ||
| --jobs|-j) j="$1" && shift ;; | ||
| --) break ;; | ||
| *) | ||
| { | ||
| echo "error: unknown flag: $flag" | ||
| usage | ||
| } >&2 | ||
| exit 1 | ||
| ;; | ||
| esac | ||
| done | ||
| exts= | ||
| for ext; do | ||
| if [ -z "$ext" ]; then | ||
| continue | ||
| fi | ||
| if [ ! -d "$ext" ]; then | ||
| echo >&2 "error: $(pwd -P)/$ext does not exist" | ||
| echo >&2 | ||
| usage >&2 | ||
| exit 1 | ||
| fi | ||
| exts="$exts $ext" | ||
| done | ||
| if [ -z "$exts" ]; then | ||
| usage >&2 | ||
| exit 1 | ||
| fi | ||
| for ext in $exts; do | ||
| ( | ||
| cd "$ext" | ||
| [ -e Makefile ] || docker-php-ext-configure "$ext" | ||
| make -j"$j" | ||
| make -j"$j" install | ||
| ls modules/*.so | cut -d/ -f2 | xargs -r docker-php-ext-enable | ||
| make -j"$j" clean | ||
| ) | ||
| done |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,113 @@ | ||
| FROM alpine:3.3 | ||
| ENV PHP_INI_DIR /usr/local/etc/php | ||
| RUN mkdir -p $PHP_INI_DIR/conf.d | ||
| ENV PHP_VERSION 5.6.18 | ||
| ENV PHP_FILENAME php-5.6.18.tar.xz | ||
| ENV PHP_SHA256 54dd9106c3469bc7028644d72ac140af00655420bbaaf4a742a64e9ed02ec1b0 | ||
| ##<autogenerated>## | ||
| ENV PHP_EXTRA_CONFIGURE_ARGS --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data | ||
| ##</autogenerated>## | ||
| # --enable-mysqlnd is included below because it's harder to compile after the fact the extensions are (since it's a plugin for several extensions, not an extension in itself) | ||
| ENV GPG_KEYS 0BD78B5F97500D450838F95DFE857D9A90D90EC1 6E4F6AB321FDC07F2C332E3AC2BF0BC433CFC8B3 | ||
| RUN addgroup -g 82 -S www-data \ | ||
| && adduser -u 82 -D -S -G www-data www-data | ||
| RUN set -xe \ | ||
| && apk add --no-cache --virtual .build-deps \ | ||
| autoconf \ | ||
| curl-dev \ | ||
| file \ | ||
| gcc \ | ||
| gnupg \ | ||
| libc-dev \ | ||
| libedit-dev \ | ||
| libxml2-dev \ | ||
| make \ | ||
| openssl-dev \ | ||
| pkgconf \ | ||
| re2c \ | ||
| sqlite-dev \ | ||
| && for key in $GPG_KEYS; do \ | ||
| gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \ | ||
| done \ | ||
| && curl -fSL "http://php.net/get/$PHP_FILENAME/from/this/mirror" -o "$PHP_FILENAME" \ | ||
| && echo "$PHP_SHA256 *$PHP_FILENAME" | sha256sum -c - \ | ||
| && curl -fSL "http://php.net/get/$PHP_FILENAME.asc/from/this/mirror" -o "$PHP_FILENAME.asc" \ | ||
| && gpg --batch --verify "$PHP_FILENAME.asc" "$PHP_FILENAME" \ | ||
| && mkdir -p /usr/src \ | ||
| && tar -Jxf "$PHP_FILENAME" -C /usr/src \ | ||
| && mv /usr/src/php-$PHP_VERSION /usr/src/php \ | ||
| && rm "$PHP_FILENAME"* \ | ||
| && cd /usr/src/php \ | ||
| && ./configure \ | ||
| --with-config-file-path="$PHP_INI_DIR" \ | ||
| --with-config-file-scan-dir="$PHP_INI_DIR/conf.d" \ | ||
| $PHP_EXTRA_CONFIGURE_ARGS \ | ||
| --disable-cgi \ | ||
| --enable-mysqlnd \ | ||
| --with-curl \ | ||
| --with-openssl \ | ||
| --with-libedit \ | ||
| --with-zlib \ | ||
| && make -j"$(getconf _NPROCESSORS_ONLN)" \ | ||
| && make install \ | ||
| && { find /usr/local/bin /usr/local/sbin -type f -perm +0111 -exec strip --strip-all '{}' + || true; } \ | ||
| && make clean \ | ||
| && runDeps="$( \ | ||
| scanelf --needed --nobanner --recursive /usr/local \ | ||
| | awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \ | ||
| | sort -u \ | ||
| | xargs -r apk info --installed \ | ||
| | sort -u \ | ||
| )" \ | ||
| && apk add --virtual .php-rundeps $runDeps \ | ||
| && apk del .build-deps | ||
| COPY docker-php-ext-* /usr/local/bin/ | ||
| ##<autogenerated>## | ||
| WORKDIR /var/www/html | ||
| RUN set -ex \ | ||
| && cd /usr/local/etc \ | ||
| && if [ -d php-fpm.d ]; then \ | ||
| # for some reason, upstream's php-fpm.conf.default has "include=NONE/etc/php-fpm.d/*.conf" | ||
| sed 's!=NONE/!=!g' php-fpm.conf.default | tee php-fpm.conf > /dev/null; \ | ||
| cp php-fpm.d/www.conf.default php-fpm.d/www.conf; \ | ||
| else \ | ||
| # PHP 5.x don't use "include=" by default, so we'll create our own simple config that mimics PHP 7+ for consistency | ||
| mkdir php-fpm.d; \ | ||
| cp php-fpm.conf.default php-fpm.d/www.conf; \ | ||
| { \ | ||
| echo '[global]'; \ | ||
| echo 'include=etc/php-fpm.d/*.conf'; \ | ||
| } | tee php-fpm.conf; \ | ||
| fi \ | ||
| && { \ | ||
| echo '[global]'; \ | ||
| echo 'error_log = /proc/self/fd/2'; \ | ||
| echo; \ | ||
| echo '[www]'; \ | ||
| echo '; if we send this to /proc/self/fd/1, it never appears'; \ | ||
| echo 'access.log = /proc/self/fd/2'; \ | ||
| echo; \ | ||
| echo 'clear_env = no'; \ | ||
| echo; \ | ||
| echo '; Ensure worker stdout and stderr are sent to the main error log.'; \ | ||
| echo 'catch_workers_output = yes'; \ | ||
| } | tee php-fpm.d/docker.conf \ | ||
| && { \ | ||
| echo '[global]'; \ | ||
| echo 'daemonize = no'; \ | ||
| echo; \ | ||
| echo '[www]'; \ | ||
| echo 'listen = [::]:9000'; \ | ||
| } | tee php-fpm.d/zz-docker.conf | ||
| EXPOSE 9000 | ||
| CMD ["php-fpm"] | ||
| ##</autogenerated>## |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,19 @@ | ||
| #!/bin/sh | ||
| set -e | ||
| ext="$1" | ||
| extDir="/usr/src/php/ext/$ext" | ||
| if [ -z "$ext" ] || ! [ -d "$extDir" ]; then | ||
| echo >&2 "usage: $0 ext-name [configure flags]" | ||
| echo >&2 " ie: $0 gd --with-jpeg-dir=/usr/local/something" | ||
| echo >&2 | ||
| echo >&2 'Possible values for ext-name:' | ||
| echo >&2 $(find /usr/src/php/ext -mindepth 2 -maxdepth 2 -type f -name 'config.m4' | cut -d/ -f6 | sort) | ||
| exit 1 | ||
| fi | ||
| shift | ||
| set -x | ||
| cd "$extDir" | ||
| phpize | ||
| ./configure "$@" |
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
apk del .build-deps make gcc autoconf and so on .... need to cleanup (same for other php versions dockerfiles)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
apk del .build-depsis supposed to remove gcc, make autoconf etc.