From 33e945f66210a31299e594786468ef0af3e4a533 Mon Sep 17 00:00:00 2001 From: richard Date: Sun, 19 Apr 2020 11:24:26 -0400 Subject: [PATCH] update php build to include basic php7.3 updated robo build --- dockerfiles/tasks/composer/Dockerfile-73 | 28 +++++++ dockerfiles/tasks/composer/build.sh | 7 ++ .../php/{Dockerfile-70 => Dockerfile-7.0} | 0 .../{Dockerfile-70-dev => Dockerfile-7.0-dev} | 0 .../php/{Dockerfile-71 => Dockerfile-7.1} | 0 .../{Dockerfile-71-dev => Dockerfile-7.1-dev} | 0 .../php/{Dockerfile-72 => Dockerfile-7.2} | 0 .../{Dockerfile-72-dev => Dockerfile-7.2-dev} | 0 dockerfiles/tasks/php/Dockerfile-7.3 | 18 ++++ dockerfiles/tasks/php/Dockerfile-7.3-dev | 22 +++++ dockerfiles/tasks/php/Dockerfile-73 | 8 -- dockerfiles/tasks/php/Jenkinsfile | 84 +------------------ dockerfiles/tasks/php/build.sh | 53 ++++++++++-- dockerfiles/tasks/robo/Dockerfile | 19 +---- dockerfiles/tasks/robo/build.sh | 3 +- 15 files changed, 129 insertions(+), 113 deletions(-) create mode 100644 dockerfiles/tasks/composer/Dockerfile-73 mode change 100644 => 100755 dockerfiles/tasks/composer/build.sh rename dockerfiles/tasks/php/{Dockerfile-70 => Dockerfile-7.0} (100%) rename dockerfiles/tasks/php/{Dockerfile-70-dev => Dockerfile-7.0-dev} (100%) rename dockerfiles/tasks/php/{Dockerfile-71 => Dockerfile-7.1} (100%) rename dockerfiles/tasks/php/{Dockerfile-71-dev => Dockerfile-7.1-dev} (100%) rename dockerfiles/tasks/php/{Dockerfile-72 => Dockerfile-7.2} (100%) rename dockerfiles/tasks/php/{Dockerfile-72-dev => Dockerfile-7.2-dev} (100%) create mode 100644 dockerfiles/tasks/php/Dockerfile-7.3 create mode 100644 dockerfiles/tasks/php/Dockerfile-7.3-dev delete mode 100644 dockerfiles/tasks/php/Dockerfile-73 diff --git a/dockerfiles/tasks/composer/Dockerfile-73 b/dockerfiles/tasks/composer/Dockerfile-73 new file mode 100644 index 0000000..021ac04 --- /dev/null +++ b/dockerfiles/tasks/composer/Dockerfile-73 @@ -0,0 +1,28 @@ +# Create a base Ubuntu image to build upon +# docker build --rm -f Dockerfile-72 -t composer:7.2 . +FROM dkregistry.xai-corp.net:5000/xaicorp/php:7.3-dev +MAINTAINER Richard Morgan + +WORKDIR /opt/project + +# set terminal variable so that tools such as nano and htop work +# this is not needed in prod containers, but is useful for devs +ENV TERM=xterm + +#RUN apt-get update && apt-get install -y software-properties-common python-software-properties \ +# && LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/php \ +# && apt-get update && apt-get install -y \ +# curl nano sed libwww-perl htop ca-certificates \ +# php7.2 php-cli php-fpm php-curl php-pear php-mcrypt php-zip php-mbstring php-xml \ +# php-pgsql php-redis php-soap\ +# git \ +# \ +# && apt-cache pkgnames | grep php7.3 \ +# && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \ +RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \ + && php composer-setup.php --install-dir=/usr/local/bin --filename=composer \ + && composer global require franzl/studio\ + && useradd -u 1000 -d /home/user user \ + && mkdir -p /home/user/.composer && chmod -R 777 /home/user/.composer + +ENTRYPOINT ["/usr/local/bin/composer"] diff --git a/dockerfiles/tasks/composer/build.sh b/dockerfiles/tasks/composer/build.sh old mode 100644 new mode 100755 index 0d585c5..15425fa --- a/dockerfiles/tasks/composer/build.sh +++ b/dockerfiles/tasks/composer/build.sh @@ -18,3 +18,10 @@ docker run --rm --entrypoint php xaicorp/composer:7.2 --version | grep 'PHP 7.2. docker run --rm xaicorp/composer:7.2 --version | grep 'Composer' docker tag xaicorp/composer:7.2 dkregistry.xai-corp.net:5000/xaicorp/composer:7.2 docker push dkregistry.xai-corp.net:5000/xaicorp/composer:7.2 + +docker build --rm -f Dockerfile-73 -t xaicorp/composer:7.3 . +docker run --rm --entrypoint php xaicorp/composer:7.3 --version | grep 'PHP 7.3.' +docker run --rm --entrypoint php xaicorp/composer:7.3 -mn | grep curl +docker run --rm xaicorp/composer:7.3 --version | grep 'Composer' +docker tag xaicorp/composer:7.3 dkregistry.xai-corp.net:5000/xaicorp/composer:7.3 +docker push dkregistry.xai-corp.net:5000/xaicorp/composer:7.3 diff --git a/dockerfiles/tasks/php/Dockerfile-70 b/dockerfiles/tasks/php/Dockerfile-7.0 similarity index 100% rename from dockerfiles/tasks/php/Dockerfile-70 rename to dockerfiles/tasks/php/Dockerfile-7.0 diff --git a/dockerfiles/tasks/php/Dockerfile-70-dev b/dockerfiles/tasks/php/Dockerfile-7.0-dev similarity index 100% rename from dockerfiles/tasks/php/Dockerfile-70-dev rename to dockerfiles/tasks/php/Dockerfile-7.0-dev diff --git a/dockerfiles/tasks/php/Dockerfile-71 b/dockerfiles/tasks/php/Dockerfile-7.1 similarity index 100% rename from dockerfiles/tasks/php/Dockerfile-71 rename to dockerfiles/tasks/php/Dockerfile-7.1 diff --git a/dockerfiles/tasks/php/Dockerfile-71-dev b/dockerfiles/tasks/php/Dockerfile-7.1-dev similarity index 100% rename from dockerfiles/tasks/php/Dockerfile-71-dev rename to dockerfiles/tasks/php/Dockerfile-7.1-dev diff --git a/dockerfiles/tasks/php/Dockerfile-72 b/dockerfiles/tasks/php/Dockerfile-7.2 similarity index 100% rename from dockerfiles/tasks/php/Dockerfile-72 rename to dockerfiles/tasks/php/Dockerfile-7.2 diff --git a/dockerfiles/tasks/php/Dockerfile-72-dev b/dockerfiles/tasks/php/Dockerfile-7.2-dev similarity index 100% rename from dockerfiles/tasks/php/Dockerfile-72-dev rename to dockerfiles/tasks/php/Dockerfile-7.2-dev diff --git a/dockerfiles/tasks/php/Dockerfile-7.3 b/dockerfiles/tasks/php/Dockerfile-7.3 new file mode 100644 index 0000000..1c9bc0b --- /dev/null +++ b/dockerfiles/tasks/php/Dockerfile-7.3 @@ -0,0 +1,18 @@ +FROM php:7.3-fpm +MAINTAINER Richard Morgan + +WORKDIR /opt/project + +#CMD ["/usr/sbin/php-fpm7.3", "-F"] + +COPY ./docker-php-fpm.conf /etc/php/7.3fpm/pool.d/www.conf + + +RUN pecl install redis-5.1.1 \ + && pecl install memcached-3.1.5 \ + && pecl install apcu-5.1.18 \ + && docker-php-ext-enable redis memcached apcu + +RUN docker-php-ext-install mysql pgsql cli curl mcrypt zip mbstring xml + +RUN docker-php-ext-enable mysql pgsql cli curl mcrypt zip mbstring xml diff --git a/dockerfiles/tasks/php/Dockerfile-7.3-dev b/dockerfiles/tasks/php/Dockerfile-7.3-dev new file mode 100644 index 0000000..36c335c --- /dev/null +++ b/dockerfiles/tasks/php/Dockerfile-7.3-dev @@ -0,0 +1,22 @@ +FROM dkregistry.xai-corp.net:5000/xaicorp/php:7.3 +MAINTAINER Richard Morgan + +WORKDIR /opt/project + +#CMD ["/usr/sbin/php-fpm7.3", "-F"] + +COPY ./docker-php-fpm.conf /usr/local/etc/php-fpm.d/www.conf + +RUN apt-get update && apt-get install -y curl nano sed git zip \ + && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +RUN pecl install redis-5.1.1 \ + && pecl install xdebug-2.9.4 \ + && docker-php-ext-enable redis xdebug + +RUN echo "xdebug.remote_enable=on" >> /usr/local/etc/php/conf.d/xdebug.ini \ + && echo "xdebug.remote_autostart=on" >> /usr/local/etc/php/conf.d/xdebug.ini \ + && echo "xdebug.remote_port = 9001" >> /usr/local/etc/php/conf.d/xdebug.ini \ + && echo "xdebug.max_nesting_level=300" >> /usr/local/etc/php/conf.d/xdebug.ini \ + && echo "xdebug.remote_connect_back=1" >> /usr/local/etc/php/conf.d/xdebug.ini \ + && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* diff --git a/dockerfiles/tasks/php/Dockerfile-73 b/dockerfiles/tasks/php/Dockerfile-73 deleted file mode 100644 index b68f837..0000000 --- a/dockerfiles/tasks/php/Dockerfile-73 +++ /dev/null @@ -1,8 +0,0 @@ -FROM php:7.3-fpm -MAINTAINER Richard Morgan - -WORKDIR /opt/project - -#CMD ["/usr/sbin/php-fpm7.3", "-F"] - -COPY ./docker-php-fpm.conf /etc/php/7.3fpm/pool.d/www.conf diff --git a/dockerfiles/tasks/php/Jenkinsfile b/dockerfiles/tasks/php/Jenkinsfile index 6728bcd..47b8c25 100644 --- a/dockerfiles/tasks/php/Jenkinsfile +++ b/dockerfiles/tasks/php/Jenkinsfile @@ -1,88 +1,12 @@ -def workdir = "dockerfiles/tasks/php" - pipeline { - agent { label 'docker' } + agent any triggers { cron('@daily') } - options { - disableConcurrentBuilds() - buildDiscarder(logRotator(numToKeepStr: '2')) - } - stages { - stage('Build PHP Images in Parallel') { - failFast false - parallel { - stage("php70") { - steps { - script { - def version = "7.0" - def dockerfile = "Dockerfile-70" - dir(workdir) { - docker.withRegistry('http://dkregistry.xai-corp.net:5000', 'b11d7f1a-81ac-4daf-8842-56afc0d2370e') { - def customImage = docker.build("dkregistry.xai-corp.net:5000/xaicorp/php:${version}", "-f ${dockerfile} .") - customImage.inside() { - sh "php --version | grep 'PHP 7.0'" - } - customImage.push() - } - } - } - } - } - stage ("php71") { - steps { - script { - def version = "7.1" - def dockerfile = "Dockerfile-71" - dir(workdir) { - docker.withRegistry('http://dkregistry.xai-corp.net:5000', 'b11d7f1a-81ac-4daf-8842-56afc0d2370e') { - def customImage = docker.build("dkregistry.xai-corp.net:5000/xaicorp/php:${version}", "-f ${dockerfile} .") - customImage.inside() { - sh "php --version | grep 'PHP 7.1'" - } - customImage.push() - } - } - } - } - } - stage ("php72") { - steps { - script { - def version = "7.2" - def dockerfile = "Dockerfile-72" - dir(workdir) { - docker.withRegistry('http://dkregistry.xai-corp.net:5000', 'b11d7f1a-81ac-4daf-8842-56afc0d2370e') { - def customImage = docker.build("dkregistry.xai-corp.net:5000/xaicorp/php:${version}", "-f ${dockerfile} .") - customImage.inside() { - sh "php --version | grep 'PHP 7.2'" - } - customImage.push() - } - } - } - } - } - stage ("php72-dev") { - steps { - script { - def version = "7.2-dev" - def dockerfile = "Dockerfile-72-dev" - dir(workdir) { - docker.withRegistry('http://dkregistry.xai-corp.net:5000', 'b11d7f1a-81ac-4daf-8842-56afc0d2370e') { - def customImage = docker.build("dkregistry.xai-corp.net:5000/xaicorp/php:${version}", "-f ${dockerfile} .") - customImage.inside() { - sh "php --version | grep 'PHP 7.2'" - sh "php --version | grep 'Xdebug'" - } - customImage.push() - } - } - } - } - } + stage('Build Image') { + steps { + build job: '_build_image', parameters: [string(name: 'IMAGE', value: 'php')], quietPeriod: 1 } } } diff --git a/dockerfiles/tasks/php/build.sh b/dockerfiles/tasks/php/build.sh index 20857cd..443e196 100755 --- a/dockerfiles/tasks/php/build.sh +++ b/dockerfiles/tasks/php/build.sh @@ -1,16 +1,51 @@ #!/usr/bin/env bash +set -ex #docker login -u richard -p $DKREGISTRY_PASS $DKREGISTRY -docker build --rm -f Dockerfile-70 -t xaicorp/php:7.0 . -docker build --rm -f Dockerfile-70-dev -t xaicorp/php:7.0-dev . -docker run --rm --entrypoint php xaicorp/php:7.0 --version | grep 'PHP 7.0.' -docker run --rm --entrypoint php xaicorp/php:7.0-dev --version | grep 'PHP 7.0.' -docker run --rm --entrypoint php xaicorp/php:7.0-dev --version | grep 'Xdebug' -docker tag xaicorp/php:7.0 dkregistry.xai-corp.net:5000/xaicorp/php:7.0 -docker tag xaicorp/php:7.0-dev dkregistry.xai-corp.net:5000/xaicorp/php:7.0-dev -docker push dkregistry.xai-corp.net:5000/xaicorp/php:7.0 -docker push dkregistry.xai-corp.net:5000/xaicorp/php:7.0-dev +build() { + local version=$1 + + #build + docker build --rm -f Dockerfile-${version} -t xaicorp/php:${version} . + + #test + docker run --rm --entrypoint php xaicorp/php:${version} --version | grep ${version} + docker run --rm --entrypoint php xaicorp/php:${version} -m | grep curl + + #register artifact + docker tag xaicorp/php:${version} dkregistry.xai-corp.net:5000/xaicorp/php:${version} + docker push dkregistry.xai-corp.net:5000/xaicorp/php:${version} +} + +build_dev() { + local version=$1 + + #build + docker build --rm -f Dockerfile-${version}-dev -t xaicorp/php:${version}-dev . + + #test + docker run --rm --entrypoint php xaicorp/php:${version}-dev --version | grep ${version} + docker run --rm --entrypoint php xaicorp/php:${version}-dev --version | grep 'Xdebug' + + #register artifact + docker tag xaicorp/php:${version}-dev dkregistry.xai-corp.net:5000/xaicorp/php:${version}-dev + docker push dkregistry.xai-corp.net:5000/xaicorp/php:${version}-dev +} + +build 7.0 +build_dev 7.0 + +#build 7.1 +#build_dev 7.1 +# +#build 7.2 +#build_dev 7.2 + +build 7.3 +build_dev 7.3 + +exit docker build --rm -f Dockerfile-71 -t xaicorp/php:7.1 . docker build --rm -f Dockerfile-71-dev -t xaicorp/php:7.1-dev . diff --git a/dockerfiles/tasks/robo/Dockerfile b/dockerfiles/tasks/robo/Dockerfile index 439c394..f760dd2 100644 --- a/dockerfiles/tasks/robo/Dockerfile +++ b/dockerfiles/tasks/robo/Dockerfile @@ -1,22 +1,10 @@ # php Robo task runner container -# -#FROM dkregistry.xai-corp.net:5000/xaicorp/php:7.2 -#MAINTAINER Richard Morgan -# -#RUN curl -L --fail http://robo.li/robo.phar -o robo.phar\ -# && chmod +x robo.phar && mv robo.phar /usr/local/bin/robo -# -#RUN mkdir -p /opt/project -# -#ENTRYPOINT ["robo"] -#WORKDIR /opt/project -FROM dkregistry.xai-corp.net:5000/xaicorp/composer:7.2 AS composer +FROM dkregistry.xai-corp.net:5000/xaicorp/composer:7.3 AS composer MAINTAINER Richard Morgan RUN composer global require consolidation/robo ~2.0 -#RUN composer global require droath/robo-docker-compose RUN composer global config repositories.xaicorp/robo-docker-compose vcs https://git.xai-corp.net/xai-corp.net/robo-docker-compose.git RUN composer global require xaicorp/robo-docker-compose ~1.0 @@ -24,9 +12,10 @@ RUN composer global require xaicorp/robo-docker-compose ~1.0 FROM dkregistry.xai-corp.net:5000/xaicorp/php:7.2 MAINTAINER Richard Morgan -COPY --from=composer /root/.composer /root/.composer +COPY --from=composer /root/.composer /opt/.composer +RUN chmod -R 777 /opt/.composer RUN mkdir -p /opt/project WORKDIR /opt/project -ENTRYPOINT ["php", "/root/.composer/vendor/bin/robo"] +ENTRYPOINT ["php", "/opt/.composer/vendor/bin/robo"] diff --git a/dockerfiles/tasks/robo/build.sh b/dockerfiles/tasks/robo/build.sh index eec3eb7..19fab7e 100755 --- a/dockerfiles/tasks/robo/build.sh +++ b/dockerfiles/tasks/robo/build.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -set -e +set -ex #if [[ -z "${DKREGISTRY_PASS}" ]]; then # docker login -u richard -p $DKREGISTRY_PASS $DKREGISTRY @@ -7,6 +7,7 @@ set -e docker build --rm -f Dockerfile -t xaicorp/php-robo . docker run --rm xaicorp/php-robo --version | grep 'Robo 2.0.' +docker run --rm --entrypoint php xaicorp/php-robo -m | grep 'curl' docker tag xaicorp/php-robo dkregistry.xai-corp.net:5000/xaicorp/php-robo docker push dkregistry.xai-corp.net:5000/xaicorp/php-robo