Skip to content

Commit

Permalink
Merge pull request #91 from mremi/master
Browse files Browse the repository at this point in the history
Revamp PHP image using Alpine instead of Debian
  • Loading branch information
mremi authored Jan 25, 2018
2 parents 243d0f5 + 7bebab3 commit 4bfd41d
Show file tree
Hide file tree
Showing 7 changed files with 87 additions and 96 deletions.
4 changes: 2 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ matrix:
- env: LANGUAGE=node VERSION=9.4 NODE_VERSION=9.4.0 NPM_VERSION=5.6.0
- env: LANGUAGE=java VERSION=8 JAVA_VERSION=8u161-1~webupd8~0
- env: LANGUAGE=php VERSION=5.3 PHP_VERSION=5.3.10 PHP_BUILD_INSTALL_EXTENSION=apcu=4.0.11 REDIS_VERSION=3.1.6 SECURITY_CHECKER_VERSION=2.0.6
- env: LANGUAGE=php VERSION=5.6 PHP_VERSION=5.6.33 PHP_BUILD_INSTALL_EXTENSION=apcu=4.0.11 REDIS_VERSION=3.1.6 SECURITY_CHECKER_VERSION=4.1.6
- env: LANGUAGE=php VERSION=7.2 PHP_VERSION=7.2.1 PHP_BUILD_INSTALL_EXTENSION=apcu=5.1.9 REDIS_VERSION=3.1.6 SECURITY_CHECKER_VERSION=4.1.7
- env: LANGUAGE=php VERSION=5.6 PHP_VERSION=5.6.33-cli-alpine APCU_VERSION=4.0.11 COMPOSER_VERSION=1.6.2 GLIBC_VERSION=2.26-r0 REDIS_VERSION=3.1.6 SECURITY_CHECKER_VERSION=4.1.6 XDEBUG_VERSION=2_5_5
- env: LANGUAGE=php VERSION=7.1 PHP_VERSION=7.1.13-cli-alpine APCU_VERSION=5.1.9 COMPOSER_VERSION=1.6.2 GLIBC_VERSION=2.26-r0 REDIS_VERSION=3.1.6 SECURITY_CHECKER_VERSION=4.1.7 XDEBUG_VERSION=2_5_5
- env: LANGUAGE=aws VERSION=1
- env: LANGUAGE=dind-aws VERSION=1 DOCKER_COMPOSE_VERSION=1.18.0
- env: LANGUAGE=golang VERSION=1.9 GLIDE_VERSION=v0.13.1
Expand Down
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
Versions
========

2018-01-DEV
-----------

* BC break: PHP image is now based on Alpine
- intl for PHP 7.2 is not released yet, so image 7.2 is not available anymore
* Upgrade modd version: 0.5

2018-01-25
----------

Expand Down
3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ Contains node (installed in the NODE_VERSION env var value), CI Helper and AWS C

### PHP

Contains PHP (installed in the PHP_VERSION env var value) within a phpenv, composer, php-cs-fixer, AWS Cli and CI Helper.
Contains PHP (installed from official alpine in the PHP_VERSION env var value) within composer, php-cs-fixer, security-checker, AWS Cli and CI Helper.

### Ruby

Expand All @@ -41,7 +41,6 @@ Contains Ansible, CI Helper and Python 2.7

Contains SonarQube Scanner and CI Helper


## Versions

Please review the [CHANGELOG.md](CHANGELOG.md) file for versions per tag.
Expand Down
1 change: 0 additions & 1 deletion php/5.3/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ FROM jolicode/phpenv
MAINTAINER Rémi Marseille <[email protected]>

ARG PHP_VERSION
ARG PHP_BUILD_INSTALL_EXTENSION
ARG CI_HELPER_VERSION
ARG MODD_VERSION
ARG REDIS_VERSION
Expand Down
89 changes: 0 additions & 89 deletions php/Dockerfile

This file was deleted.

71 changes: 71 additions & 0 deletions php/Dockerfile.tpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
FROM php:{{PHP_VERSION}}
MAINTAINER Rémi Marseille <marseille@ekino.com>

ARG APCU_VERSION
ARG CI_HELPER_VERSION
ARG COMPOSER_VERSION
ARG GLIBC_VERSION
ARG MODD_VERSION
ARG REDIS_VERSION
ARG SECURITY_CHECKER_VERSION
ARG XDEBUG_VERSION

ENV COMPOSER_NO_INTERACTION=1 \
TERM=xterm

RUN echo "Starting ..." && \
echo "@edge-community http://nl.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories && \
echo "@edge-main http://nl.alpinelinux.org/alpine/edge/main" >> /etc/apk/repositories && \
apk add --update --upgrade alpine-sdk autoconf bash bzip2 curl git icu-dev@edge-main libmcrypt-dev libxml2-dev make openssh-client php{{PHP_MAJOR_VERSION}}-intl@edge-community postgresql-dev tzdata && \
echo "Done base install!" && \

echo "Install CI Helper" && \
curl -sSL https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_VERSION}/sgerrand.rsa.pub -o /etc/apk/keys/sgerrand.rsa.pub && \
curl -sSL https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_VERSION}/glibc-${GLIBC_VERSION}.apk -O && \
apk add -q glibc-${GLIBC_VERSION}.apk && \
rm /etc/apk/keys/sgerrand.rsa.pub glibc-${GLIBC_VERSION}.apk && \
curl -sSL https://github.com/rande/gitlab-ci-helper/releases/download/${CI_HELPER_VERSION}/linux-amd64-gitlab-ci-helper -o /usr/bin/ci-helper && \
chmod 755 /usr/bin/ci-helper && \
echo "Done install CI Helper" && \

echo "Install Modd" && \
curl -sSL https://github.com/cortesi/modd/releases/download/v${MODD_VERSION}/modd-${MODD_VERSION}-linux64.tgz | tar -xOvzf - modd-${MODD_VERSION}-linux64/modd > /usr/bin/modd && \
chmod 755 /usr/bin/modd && \
echo "Done Install Modd" && \

echo "Starting PHP" && \
docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) bcmath pcntl pdo_mysql pdo_pgsql soap sockets zip && \
pecl install apcu-${APCU_VERSION} && \
echo -e "\
date.timezone=${PHP_TIMEZONE:-UTC} \n\
short_open_tag=Off \n\
extension=apcu.so \n\
extension=/usr/lib/php{{PHP_MAJOR_VERSION}}/modules/intl.so \n\
zend_extension=opcache.so \n\
" > /usr/local/etc/php/php.ini && \

curl -sSL https://getcomposer.org/download/${COMPOSER_VERSION}/composer.phar -o /usr/local/bin/composer && chmod a+x /usr/local/bin/composer && \
curl -sSL http://get.sensiolabs.org/php-cs-fixer.phar -o /usr/local/bin/php-cs-fixer && chmod a+x /usr/local/bin/php-cs-fixer && \
curl -sSL http://get.sensiolabs.org/security-checker-v${SECURITY_CHECKER_VERSION}.phar -o /usr/local/bin/security-checker && chmod a+x /usr/local/bin/security-checker && \
composer global require "hirak/prestissimo:^0.3" && \

curl -sSL https://github.com/phpredis/phpredis/archive/${REDIS_VERSION}.tar.gz | tar xz -C /tmp && \
cd /tmp/phpredis-${REDIS_VERSION} && phpize && ./configure && make && make install && \
echo "extension=redis.so" > /usr/local/etc/php/conf.d/redis.ini && \

curl -sSL https://github.com/xdebug/xdebug/archive/XDEBUG_${XDEBUG_VERSION}.tar.gz | tar xz -C /tmp && \
cd /tmp/xdebug-XDEBUG_${XDEBUG_VERSION} && phpize && ./configure --enable-xdebug && make && make install && \
echo "zend_extension=xdebug.so" > /usr/local/etc/php/conf.d/xdebug.ini && \

echo "Done PHP!" && \

echo "Starting AWS" && \
apk add groff py-pip && \
pip install -q -U awscli && \
echo "Done AWS!" && \

echo "Cleaning files!" && \
apk del --purge alpine-sdk autoconf && \
rm -rf /tmp/* /usr/share/doc /var/cache/apk/* && \

echo "Done!"
8 changes: 6 additions & 2 deletions travis.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ def main():
parser.add_argument('--pull-request', dest='pull_request', default=os.environ.get('TRAVIS_PULL_REQUEST', "false"), help='it is a PR?')
parser.add_argument('--event-type', dest='event_type', default=os.environ.get('TRAVIS_EVENT_TYPE', ""), help='The event type which trigger the build')
parser.add_argument('--travis', dest='travis', default=os.environ.get('TRAVIS', "false"), help='is travis')
parser.add_argument('--modd', dest='modd', default='0.4', help='is travis')
parser.add_argument('--modd', dest='modd', default='0.5', help='is travis')

args = parser.parse_args()

Expand Down Expand Up @@ -135,9 +135,13 @@ def run_build(buildInfo):
build_context = language
run_args = "--rm"
if language == "php":
build_args = "%s --build-arg MODD_VERSION=%s --build-arg PHP_VERSION=%s --build-arg PHP_BUILD_INSTALL_EXTENSION=%s --build-arg REDIS_VERSION=%s --build-arg SECURITY_CHECKER_VERSION=%s" % (build_args, buildInfo.modd, os.environ.get("PHP_VERSION"), os.environ.get("PHP_BUILD_INSTALL_EXTENSION"), os.environ.get("REDIS_VERSION"), os.environ.get("SECURITY_CHECKER_VERSION"))
if version == "5.3":
build_args = "%s --build-arg MODD_VERSION=%s --build-arg PHP_VERSION=%s --build-arg REDIS_VERSION=%s --build-arg SECURITY_CHECKER_VERSION=%s" % (build_args, buildInfo.modd, os.environ.get("PHP_VERSION"), os.environ.get("REDIS_VERSION"), os.environ.get("SECURITY_CHECKER_VERSION"))
build_context = "%s/%s" % (language, version)
else:
build_args = "%s --build-arg MODD_VERSION=%s --build-arg APCU_VERSION=%s --build-arg COMPOSER_VERSION=%s --build-arg GLIBC_VERSION=%s --build-arg REDIS_VERSION=%s --build-arg SECURITY_CHECKER_VERSION=%s --build-arg XDEBUG_VERSION=%s" % (build_args, buildInfo.modd, os.environ.get("APCU_VERSION"), os.environ.get("COMPOSER_VERSION"), os.environ.get("GLIBC_VERSION"), os.environ.get("REDIS_VERSION"), os.environ.get("SECURITY_CHECKER_VERSION"), os.environ.get("XDEBUG_VERSION"))
build_context = "-f %s/Dockerfile.%s %s" % (language, version, language)
run_command_exit('sed -e "s,{{PHP_VERSION}},%s," -e "s,{{PHP_MAJOR_VERSION}},%s," %s/Dockerfile.tpl > %s/Dockerfile.%s' % (os.environ.get("PHP_VERSION"), version.split(".")[0], language, language, version), "fail to create Dockerfile for %s %s" % (language, os.environ.get("PHP_VERSION")))

if language == "java":
build_args = "%s --build-arg MODD_VERSION=%s --build-arg JAVA_VERSION=%s" % (build_args, buildInfo.modd, os.environ.get("JAVA_VERSION"))
Expand Down

0 comments on commit 4bfd41d

Please sign in to comment.