From dfc34817734bc915119fa15722ad4f3eb802b8fb Mon Sep 17 00:00:00 2001 From: cytopia Date: Fri, 8 Mar 2019 14:21:03 +0100 Subject: [PATCH 1/2] Rewrite gem, npm and pip install management --- .yamllint | 13 + Dockerfiles/work/Dockerfile-5.2 | 200 +- Dockerfiles/work/Dockerfile-5.3 | 200 +- Dockerfiles/work/Dockerfile-5.4 | 200 +- Dockerfiles/work/Dockerfile-5.5 | 200 +- Dockerfiles/work/Dockerfile-5.6 | 200 +- Dockerfiles/work/Dockerfile-7.0 | 200 +- Dockerfiles/work/Dockerfile-7.1 | 200 +- Dockerfiles/work/Dockerfile-7.2 | 200 +- Dockerfiles/work/Dockerfile-7.3 | 200 +- Dockerfiles/work/Dockerfile-7.4 | 200 +- Dockerfiles/work/Dockerfile-8.0 | 200 +- build/ansible/DOCKERFILES/Dockerfile-work.j2 | 157 +- build/ansible/group_vars/all.yml | 1680 ----------------- build/ansible/group_vars/all/all-ansible.yml | 69 + .../group_vars/all/all-php-settings.yml | 106 ++ build/ansible/group_vars/all/mods.yml | 958 ++++++++++ build/ansible/group_vars/all/work.yml | 656 +++++++ 18 files changed, 3497 insertions(+), 2342 deletions(-) create mode 100644 .yamllint delete mode 100644 build/ansible/group_vars/all.yml create mode 100644 build/ansible/group_vars/all/all-ansible.yml create mode 100644 build/ansible/group_vars/all/all-php-settings.yml create mode 100644 build/ansible/group_vars/all/mods.yml create mode 100644 build/ansible/group_vars/all/work.yml diff --git a/.yamllint b/.yamllint new file mode 100644 index 0000000..0d965ce --- /dev/null +++ b/.yamllint @@ -0,0 +1,13 @@ +--- +# Use 'default' rules +extends: default + +# Overwrite above default rules +rules: + colons: + max-spaces-before: 0 + max-spaces-after: 60 + comments: + require-starting-space: false + min-spaces-from-content: 1 + line-length: disable diff --git a/Dockerfiles/work/Dockerfile-5.2 b/Dockerfiles/work/Dockerfile-5.2 index fb1ba7f..fc2eb7c 100644 --- a/Dockerfiles/work/Dockerfile-5.2 +++ b/Dockerfiles/work/Dockerfile-5.2 @@ -37,8 +37,6 @@ RUN set -x \ && echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu wily main" > /etc/apt/sources.list.d/git.list \ && APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5 \ && echo "deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.6 main" > /etc/apt/sources.list.d/mongo.list \ - && curl -sS "https://deb.nodesource.com/gpgkey/nodesource.gpg.key" 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ - && echo "deb http://deb.nodesource.com/node_8.x jessie main" > /etc/apt/sources.list.d/node.list \ && curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ && echo "deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main" > /etc/apt/sources.list.d/pgsql.list \ && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ @@ -82,15 +80,10 @@ RUN set -x \ nano \ net-tools \ netcat \ - nodejs \ openssh-client \ patch \ patchelf \ postgresql-client \ - python-cffi \ - python-dev \ - python-pip \ - python-wheel \ redis-tools \ rsync \ rubygems \ @@ -113,20 +106,40 @@ RUN set -x \ && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \ && rm -rf /var/lib/apt/lists/* \ \ -# Get newer pip version - && pip install --upgrade pip \ - && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false python-pip \ - && rm -rf /var/lib/apt/lists/* \ - \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) +### +### Install custom software +### RUN set -x \ -# ansible - && /usr/local/bin/pip install --no-cache-dir --upgrade setuptools \ -&& /usr/local/bin/pip install --no-cache-dir ansible \ +# pip + && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ +&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ + libpython-dev \ +&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ +&& rm -rf /var/lib/apt/lists/* \ +\ +&& curl -sS https://bootstrap.pypa.io/get-pip.py | python \ + \ +# nvm + && git clone https://github.com/creationix/nvm /opt/nvm \ +&& cd /opt/nvm \ +&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ +\ +&& { \ + echo 'export NVM_DIR="/opt/nvm"'; \ + echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm'; \ + echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ +} >> /home/devilbox/.bashrc \ +\ +&& chown -R devilbox:devilbox /opt/nvm \ + \ + && su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ \ # awesomeci && git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \ @@ -136,16 +149,6 @@ RUN set -x \ && make install \ && cd / \ && rm -rf /usr/local/src/awesome-ci \ - \ - && gem install mixlib-config -v 2.2.4 \ -&& gem install rb-inotify -v 0.9.10 \ -&& gem install mdl \ -&& gem install scss_lint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y eslint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y jsonlint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y mdlint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y gulp \ -&& rm -rf /tmp/y \ \ # gitflow && git clone git://github.com/petervanderdoes/gitflow.git /tmp/gitflow \ @@ -153,11 +156,6 @@ RUN set -x \ && make install \ && cd / && rm -rf /tmp/gitflow \ \ -# grunt - && until yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y grunt; do sleep 1; done \ -&& until yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y grunt-cli; do sleep 1; done \ -&& rm -rf /tmp/y \ - \ # linkcheck && curl https://raw.githubusercontent.com/cytopia/linkcheck/master/linkcheck > /usr/local/bin/linkcheck \ && chmod +x /usr/local/bin/linkcheck \ @@ -174,7 +172,7 @@ RUN set -x \ && su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew config' \ \ # mhsendmail - && wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ + && wget --hsts-file=/dev/null https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ && chmod +x mhsendmail_linux_amd64 \ && mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ \ @@ -208,15 +206,6 @@ RUN set -x \ && curl -sS -L https://github.com/squizlabs/PHP_CodeSniffer/releases/download/2.9.0/phpcbf.phar > /usr/local/bin/phpcbf 2>/dev/null \ && chmod +x /usr/local/bin/phpcbf \ \ -# pm2 - && until npm install pm2 -g; do sleep 1; done \ -# sass - && gem install sass \ -# webpack - && yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y webpack \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y webpack-cli \ -&& rm -rf /tmp/y \ - \ # wkhtmltopdf && VERSION="$( curl -sSL https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+jessie_amd64\.deb' | head -1 )" \ && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ @@ -229,22 +218,12 @@ RUN set -x \ && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \ && rm -rf /var/lib/apt/lists/* \ \ -# yamllint - && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ -&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests libpython-dev python-setuptools libyaml-dev \ - \ - && /usr/local/bin/pip install --no-cache-dir yamllint \ - && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false libpython-dev python-setuptools libyaml-dev \ -&& rm -rf /var/lib/apt/lists/* \ - \ # cleanup && rm -rf /home/${MY_USER}/.*json \ && rm -rf /home/${MY_USER}/.cache \ && rm -rf /home/${MY_USER}/.composer \ && rm -rf /home/${MY_USER}/.config \ && rm -rf /home/${MY_USER}/.drush \ -&& rm -rf /home/${MY_USER}/.gem \ -&& rm -rf /home/${MY_USER}/.npm \ && rm -rf /home/${MY_USER}/.subversion \ && rm -rf /home/${MY_USER}/.v8* \ \ @@ -253,15 +232,101 @@ RUN set -x \ && rm -rf /root/.composer \ && rm -rf /root/.config \ && rm -rf /root/.drush \ -&& rm -rf /root/.gem \ -&& rm -rf /root/.npm \ && rm -rf /root/.subversion \ && rm -rf /root/.v8* \ \ && rm -rf /tmp/* \ +&& (rm -rf /tmp/.* || true) \ \ + \ + && (rm -rf /root/.gem || true ) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.npm || true) \ + \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.npm || true) \ \ && (rm -rf /usr/local/src/composer/cache/* || true) \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) + + +### +### Install Node npm packages (globally) +### +RUN set -x \ +# eslint + && su -c '. /opt/nvm/nvm.sh; npm install -g eslint' devilbox \ +# grunt + && su -c '. /opt/nvm/nvm.sh; npm install -g grunt' devilbox \ +# grunt_cli + && su -c '. /opt/nvm/nvm.sh; npm install -g grunt-cli' devilbox \ +# gulp + && su -c '. /opt/nvm/nvm.sh; npm install -g gulp' devilbox \ +# jsonlint + && su -c '. /opt/nvm/nvm.sh; npm install -g jsonlint' devilbox \ +# pm2 + && su -c '. /opt/nvm/nvm.sh; npm install -g pm2' devilbox \ +# mdlint + && su -c '. /opt/nvm/nvm.sh; npm install -g mdlint' devilbox \ +# webpack + && su -c '. /opt/nvm/nvm.sh; npm install -g webpack' devilbox \ +# webpack_cli + && su -c '. /opt/nvm/nvm.sh; npm install -g webpack-cli' devilbox \ + \ + && ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ + \ + && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ + && rm -rf /home/devilbox/.npm \ + && rm -rf /home/devilbox/.config \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) \ + \ + && (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) + + + +### +### Install Python pip packages +### +RUN set -x \ +# ansible + && pip install --no-cache-dir --force-reinstall ansible \ +# yamllint + && pip install --no-cache-dir --force-reinstall yamllint \ + \ + && rm -rf /root/.cache/pip \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) \ + \ + && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ + && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ + && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) + + +### +### Install Ruby gems +### +RUN set -x \ +# mixlib_config + && gem install mixlib-config -v 2.2.4 \ +# rb_inotify + && gem install rb-inotify -v 0.9.10 \ +# mdl + && gem install mdl \ +# scss_lint + && gem install scss_lint \ +# sass + && gem install sass \ + \ + && rm -rf /root/.gem \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -273,7 +338,7 @@ RUN set -x \ ### RUN \ { \ - echo "PATH=\${PATH}:/usr/local/bin:/usr/local/sbin:/usr/local/node/bin"; \ + echo "PATH=\${PATH}:/usr/local/bin:/usr/local/sbin:\${HOME}/.yarn/bin"; \ echo "export PATH"; \ echo ". /etc/bash-devilbox"; \ echo "if [ -d /etc/bashrc-devilbox.d/ ]; then"; \ @@ -308,7 +373,7 @@ RUN set -x \ && rm -f /usr/local/etc/php/php.ini RUN set -x \ - && ansible --version | grep -E '^ansible [.0-9]+$' \ + && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[.0-9]+' \ && mdl --version | grep -E '[.0-9]+' \ && scss-lint --version | grep -E '[.0-9]+' \ && eslint -v | grep -E '[.0-9]+' \ @@ -317,18 +382,35 @@ RUN set -x \ && gulp --version | grep -E '[.0-9]+' \ \ && git-flow version | grep -E '[.0-9]+' \ - && grunt --version | grep -E '[.0-9]+' \ && linkcheck --version | grep -E '^linkcheck\sv[.0-9]+' \ && su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew --version' | grep -E 'Homebrew\s*[.0-9]+' \ && mysqldump-secure --version | grep -E 'Version:\s*[.0-9]+' \ && phpcs --version | grep -E 'version [.0-9]+' \ && phpcbf --version | grep -E 'version [.0-9]+' \ - && pm2 --no-daemon --version | grep -E '[.0-9]+' \ - && sass --version | grep -E '[.0-9]+' \ - && webpack --version | grep -E '[.0-9]+' \ && wkhtmltopdf --version | grep -E "^wkhtmltopdf [.0-9]+\s+\(.+patched.+\)" \ + \ + && ansible --version | grep -E '^ansible [.0-9]+$' \ && yamllint --version 2>&1 | grep -E '[.0-9]+' \ - && true + \ + && eslint -v | grep -E '[.0-9]+' \ + && grunt --version | grep -E '[.0-9]+' \ + && gulp --version | grep -E '[.0-9]+' \ + && jsonlint --version | grep -E '[.0-9]+' \ + && pm2 --no-daemon --version | grep -E '[.0-9]+' \ + && mdlint --version | grep -E '[.0-9]+' \ + && webpack --version | grep -E '[.0-9]+' \ + \ + && mdl --version | grep -E '[.0-9]+' \ + && sass --version | grep -E '[.0-9]+' \ + \ + && rm -rf /home/devilbox/.config/ \ + && rm -rf /root/.ansible \ + && rm -rf /root/.console \ + && rm -rf /root/.composer \ + && rm -rf /root/.drush \ + && rm -rf /root/.pm2 \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) ### diff --git a/Dockerfiles/work/Dockerfile-5.3 b/Dockerfiles/work/Dockerfile-5.3 index 1266e9d..d2f637b 100644 --- a/Dockerfiles/work/Dockerfile-5.3 +++ b/Dockerfiles/work/Dockerfile-5.3 @@ -37,8 +37,6 @@ RUN set -x \ && echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu wily main" > /etc/apt/sources.list.d/git.list \ && APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5 \ && echo "deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.6 main" > /etc/apt/sources.list.d/mongo.list \ - && curl -sS "https://deb.nodesource.com/gpgkey/nodesource.gpg.key" 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ - && echo "deb http://deb.nodesource.com/node_8.x jessie main" > /etc/apt/sources.list.d/node.list \ && curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ && echo "deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main" > /etc/apt/sources.list.d/pgsql.list \ && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ @@ -82,15 +80,10 @@ RUN set -x \ nano \ net-tools \ netcat \ - nodejs \ openssh-client \ patch \ patchelf \ postgresql-client \ - python-cffi \ - python-dev \ - python-pip \ - python-wheel \ redis-tools \ rsync \ rubygems \ @@ -113,22 +106,42 @@ RUN set -x \ && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \ && rm -rf /var/lib/apt/lists/* \ \ -# Get newer pip version - && pip install --upgrade pip \ - && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false python-pip \ - && rm -rf /var/lib/apt/lists/* \ - \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) +### +### Install custom software +### RUN set -x \ # composer && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \ -# ansible - && /usr/local/bin/pip install --no-cache-dir --upgrade setuptools \ -&& /usr/local/bin/pip install --no-cache-dir ansible \ +# pip + && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ +&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ + libpython-dev \ +&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ +&& rm -rf /var/lib/apt/lists/* \ +\ +&& curl -sS https://bootstrap.pypa.io/get-pip.py | python \ + \ +# nvm + && git clone https://github.com/creationix/nvm /opt/nvm \ +&& cd /opt/nvm \ +&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ +\ +&& { \ + echo 'export NVM_DIR="/opt/nvm"'; \ + echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm'; \ + echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ +} >> /home/devilbox/.bashrc \ +\ +&& chown -R devilbox:devilbox /opt/nvm \ + \ + && su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ \ # awesomeci && git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \ @@ -138,16 +151,6 @@ RUN set -x \ && make install \ && cd / \ && rm -rf /usr/local/src/awesome-ci \ - \ - && gem install mixlib-config -v 2.2.4 \ -&& gem install rb-inotify -v 0.9.10 \ -&& gem install mdl \ -&& gem install scss_lint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y eslint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y jsonlint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y mdlint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y gulp \ -&& rm -rf /tmp/y \ \ # codeception && COMPOSER_HOME="/usr/local/src/composer" composer global require codeception/codeception \ @@ -172,11 +175,6 @@ RUN set -x \ && make install \ && cd / && rm -rf /tmp/gitflow \ \ -# grunt - && until yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y grunt; do sleep 1; done \ -&& until yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y grunt-cli; do sleep 1; done \ -&& rm -rf /tmp/y \ - \ # linkcheck && curl https://raw.githubusercontent.com/cytopia/linkcheck/master/linkcheck > /usr/local/bin/linkcheck \ && chmod +x /usr/local/bin/linkcheck \ @@ -193,7 +191,7 @@ RUN set -x \ && su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew config' \ \ # mhsendmail - && wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ + && wget --hsts-file=/dev/null https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ && chmod +x mhsendmail_linux_amd64 \ && mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ \ @@ -246,15 +244,6 @@ RUN set -x \ && curl -qL https://phar.phpunit.de/phpunit-4.phar > /usr/local/bin/phpunit 2>/dev/null \ && chmod +x /usr/local/bin/phpunit \ \ -# pm2 - && until npm install pm2 -g; do sleep 1; done \ -# sass - && gem install sass \ -# webpack - && yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y webpack \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y webpack-cli \ -&& rm -rf /tmp/y \ - \ # wkhtmltopdf && VERSION="$( curl -sSL https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+jessie_amd64\.deb' | head -1 )" \ && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ @@ -270,22 +259,12 @@ RUN set -x \ # wpcli && curl https://github.com/wp-cli/wp-cli/releases/download/v1.5.1/wp-cli-1.5.1.phar -L -o /usr/local/bin/wp \ && chmod +x /usr/local/bin/wp \ -# yamllint - && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ -&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests libpython-dev python-setuptools libyaml-dev \ - \ - && /usr/local/bin/pip install --no-cache-dir yamllint \ - && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false libpython-dev python-setuptools libyaml-dev \ -&& rm -rf /var/lib/apt/lists/* \ - \ # cleanup && rm -rf /home/${MY_USER}/.*json \ && rm -rf /home/${MY_USER}/.cache \ && rm -rf /home/${MY_USER}/.composer \ && rm -rf /home/${MY_USER}/.config \ && rm -rf /home/${MY_USER}/.drush \ -&& rm -rf /home/${MY_USER}/.gem \ -&& rm -rf /home/${MY_USER}/.npm \ && rm -rf /home/${MY_USER}/.subversion \ && rm -rf /home/${MY_USER}/.v8* \ \ @@ -294,15 +273,101 @@ RUN set -x \ && rm -rf /root/.composer \ && rm -rf /root/.config \ && rm -rf /root/.drush \ -&& rm -rf /root/.gem \ -&& rm -rf /root/.npm \ && rm -rf /root/.subversion \ && rm -rf /root/.v8* \ \ && rm -rf /tmp/* \ +&& (rm -rf /tmp/.* || true) \ \ + \ + && (rm -rf /root/.gem || true ) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.npm || true) \ + \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.npm || true) \ \ && (rm -rf /usr/local/src/composer/cache/* || true) \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) + + +### +### Install Node npm packages (globally) +### +RUN set -x \ +# eslint + && su -c '. /opt/nvm/nvm.sh; npm install -g eslint' devilbox \ +# grunt + && su -c '. /opt/nvm/nvm.sh; npm install -g grunt' devilbox \ +# grunt_cli + && su -c '. /opt/nvm/nvm.sh; npm install -g grunt-cli' devilbox \ +# gulp + && su -c '. /opt/nvm/nvm.sh; npm install -g gulp' devilbox \ +# jsonlint + && su -c '. /opt/nvm/nvm.sh; npm install -g jsonlint' devilbox \ +# pm2 + && su -c '. /opt/nvm/nvm.sh; npm install -g pm2' devilbox \ +# mdlint + && su -c '. /opt/nvm/nvm.sh; npm install -g mdlint' devilbox \ +# webpack + && su -c '. /opt/nvm/nvm.sh; npm install -g webpack' devilbox \ +# webpack_cli + && su -c '. /opt/nvm/nvm.sh; npm install -g webpack-cli' devilbox \ + \ + && ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ + \ + && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ + && rm -rf /home/devilbox/.npm \ + && rm -rf /home/devilbox/.config \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) \ + \ + && (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) + + + +### +### Install Python pip packages +### +RUN set -x \ +# ansible + && pip install --no-cache-dir --force-reinstall ansible \ +# yamllint + && pip install --no-cache-dir --force-reinstall yamllint \ + \ + && rm -rf /root/.cache/pip \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) \ + \ + && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ + && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ + && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) + + +### +### Install Ruby gems +### +RUN set -x \ +# mixlib_config + && gem install mixlib-config -v 2.2.4 \ +# rb_inotify + && gem install rb-inotify -v 0.9.10 \ +# mdl + && gem install mdl \ +# scss_lint + && gem install scss_lint \ +# sass + && gem install sass \ + \ + && rm -rf /root/.gem \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -314,7 +379,7 @@ RUN set -x \ ### RUN \ { \ - echo "PATH=\${PATH}:/usr/local/bin:/usr/local/sbin:/usr/local/node/bin"; \ + echo "PATH=\${PATH}:/usr/local/bin:/usr/local/sbin:\${HOME}/.yarn/bin"; \ echo "export PATH"; \ echo ". /etc/bash-devilbox"; \ echo "if [ -d /etc/bashrc-devilbox.d/ ]; then"; \ @@ -350,7 +415,7 @@ RUN set -x \ RUN set -x \ && composer --version 2>/dev/null | grep -E 'version\s*[.0-9]+' \ - && ansible --version | grep -E '^ansible [.0-9]+$' \ + && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[.0-9]+' \ && mdl --version | grep -E '[.0-9]+' \ && scss-lint --version | grep -E '[.0-9]+' \ && eslint -v | grep -E '[.0-9]+' \ @@ -361,7 +426,6 @@ RUN set -x \ && codecept --version 2>/dev/null | grep -E '^Codeception(\sversion)?\s[.0-9]+$' \ && drush7 --version | grep -E '7[.0-9]+\s*$' \ && git-flow version | grep -E '[.0-9]+' \ - && grunt --version | grep -E '[.0-9]+' \ && linkcheck --version | grep -E '^linkcheck\sv[.0-9]+' \ && su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew --version' | grep -E 'Homebrew\s*[.0-9]+' \ && mysqldump-secure --version | grep -E 'Version:\s*[.0-9]+' \ @@ -370,13 +434,31 @@ RUN set -x \ && phpcbf --version | grep -E 'version [.0-9]+' \ && php-cs-fixer --version 2>&1 | grep -E 'Fixer\s+(version\s*)?[-_.0-9]+\s+' \ && phpunit --version | grep -iE '^PHPUnit\s[.0-9]+' \ - && pm2 --no-daemon --version | grep -E '[.0-9]+' \ - && sass --version | grep -E '[.0-9]+' \ - && webpack --version | grep -E '[.0-9]+' \ && wkhtmltopdf --version | grep -E "^wkhtmltopdf [.0-9]+\s+\(.+patched.+\)" \ && wp --allow-root --version | grep -E '[.0-9]+' \ + \ + && ansible --version | grep -E '^ansible [.0-9]+$' \ && yamllint --version 2>&1 | grep -E '[.0-9]+' \ - && true + \ + && eslint -v | grep -E '[.0-9]+' \ + && grunt --version | grep -E '[.0-9]+' \ + && gulp --version | grep -E '[.0-9]+' \ + && jsonlint --version | grep -E '[.0-9]+' \ + && pm2 --no-daemon --version | grep -E '[.0-9]+' \ + && mdlint --version | grep -E '[.0-9]+' \ + && webpack --version | grep -E '[.0-9]+' \ + \ + && mdl --version | grep -E '[.0-9]+' \ + && sass --version | grep -E '[.0-9]+' \ + \ + && rm -rf /home/devilbox/.config/ \ + && rm -rf /root/.ansible \ + && rm -rf /root/.console \ + && rm -rf /root/.composer \ + && rm -rf /root/.drush \ + && rm -rf /root/.pm2 \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) ### diff --git a/Dockerfiles/work/Dockerfile-5.4 b/Dockerfiles/work/Dockerfile-5.4 index de21650..40edeef 100644 --- a/Dockerfiles/work/Dockerfile-5.4 +++ b/Dockerfiles/work/Dockerfile-5.4 @@ -37,8 +37,6 @@ RUN set -x \ && echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu wily main" > /etc/apt/sources.list.d/git.list \ && APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5 \ && echo "deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.6 main" > /etc/apt/sources.list.d/mongo.list \ - && curl -sS "https://deb.nodesource.com/gpgkey/nodesource.gpg.key" 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ - && echo "deb http://deb.nodesource.com/node_8.x jessie main" > /etc/apt/sources.list.d/node.list \ && curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ && echo "deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main" > /etc/apt/sources.list.d/pgsql.list \ && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ @@ -82,15 +80,10 @@ RUN set -x \ nano \ net-tools \ netcat \ - nodejs \ openssh-client \ patch \ patchelf \ postgresql-client \ - python-cffi \ - python-dev \ - python-pip \ - python-wheel \ redis-tools \ rsync \ rubygems \ @@ -113,22 +106,42 @@ RUN set -x \ && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \ && rm -rf /var/lib/apt/lists/* \ \ -# Get newer pip version - && pip install --upgrade pip \ - && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false python-pip \ - && rm -rf /var/lib/apt/lists/* \ - \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) +### +### Install custom software +### RUN set -x \ # composer && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \ -# ansible - && /usr/local/bin/pip install --no-cache-dir --upgrade setuptools \ -&& /usr/local/bin/pip install --no-cache-dir ansible \ +# pip + && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ +&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ + libpython-dev \ +&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ +&& rm -rf /var/lib/apt/lists/* \ +\ +&& curl -sS https://bootstrap.pypa.io/get-pip.py | python \ + \ +# nvm + && git clone https://github.com/creationix/nvm /opt/nvm \ +&& cd /opt/nvm \ +&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ +\ +&& { \ + echo 'export NVM_DIR="/opt/nvm"'; \ + echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm'; \ + echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ +} >> /home/devilbox/.bashrc \ +\ +&& chown -R devilbox:devilbox /opt/nvm \ + \ + && su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ \ # awesomeci && git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \ @@ -138,16 +151,6 @@ RUN set -x \ && make install \ && cd / \ && rm -rf /usr/local/src/awesome-ci \ - \ - && gem install mixlib-config -v 2.2.4 \ -&& gem install rb-inotify -v 0.9.10 \ -&& gem install mdl \ -&& gem install scss_lint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y eslint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y jsonlint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y mdlint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y gulp \ -&& rm -rf /tmp/y \ \ # codeception && COMPOSER_HOME="/usr/local/src/composer" composer global require codeception/codeception \ @@ -188,11 +191,6 @@ RUN set -x \ && make install \ && cd / && rm -rf /tmp/gitflow \ \ -# grunt - && until yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y grunt; do sleep 1; done \ -&& until yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y grunt-cli; do sleep 1; done \ -&& rm -rf /tmp/y \ - \ # laravel && git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \ && cd /usr/local/src/laravel-installer \ @@ -219,7 +217,7 @@ RUN set -x \ && su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew config' \ \ # mhsendmail - && wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ + && wget --hsts-file=/dev/null https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ && chmod +x mhsendmail_linux_amd64 \ && mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ \ @@ -272,18 +270,9 @@ RUN set -x \ && curl -qL https://phar.phpunit.de/phpunit-4.phar > /usr/local/bin/phpunit 2>/dev/null \ && chmod +x /usr/local/bin/phpunit \ \ -# pm2 - && until npm install pm2 -g; do sleep 1; done \ -# sass - && gem install sass \ # symfony && curl https://symfony.com/installer -L -o /usr/local/bin/symfony \ && chmod +x /usr/local/bin/symfony \ -# webpack - && yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y webpack \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y webpack-cli \ -&& rm -rf /tmp/y \ - \ # wkhtmltopdf && VERSION="$( curl -sSL https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+jessie_amd64\.deb' | head -1 )" \ && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ @@ -299,22 +288,12 @@ RUN set -x \ # wpcli && curl https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \ && chmod +x /usr/local/bin/wp \ -# yamllint - && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ -&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests libpython-dev python-setuptools libyaml-dev \ - \ - && /usr/local/bin/pip install --no-cache-dir yamllint \ - && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false libpython-dev python-setuptools libyaml-dev \ -&& rm -rf /var/lib/apt/lists/* \ - \ # cleanup && rm -rf /home/${MY_USER}/.*json \ && rm -rf /home/${MY_USER}/.cache \ && rm -rf /home/${MY_USER}/.composer \ && rm -rf /home/${MY_USER}/.config \ && rm -rf /home/${MY_USER}/.drush \ -&& rm -rf /home/${MY_USER}/.gem \ -&& rm -rf /home/${MY_USER}/.npm \ && rm -rf /home/${MY_USER}/.subversion \ && rm -rf /home/${MY_USER}/.v8* \ \ @@ -323,15 +302,101 @@ RUN set -x \ && rm -rf /root/.composer \ && rm -rf /root/.config \ && rm -rf /root/.drush \ -&& rm -rf /root/.gem \ -&& rm -rf /root/.npm \ && rm -rf /root/.subversion \ && rm -rf /root/.v8* \ \ && rm -rf /tmp/* \ +&& (rm -rf /tmp/.* || true) \ \ + \ + && (rm -rf /root/.gem || true ) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.npm || true) \ + \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.npm || true) \ \ && (rm -rf /usr/local/src/composer/cache/* || true) \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) + + +### +### Install Node npm packages (globally) +### +RUN set -x \ +# eslint + && su -c '. /opt/nvm/nvm.sh; npm install -g eslint' devilbox \ +# grunt + && su -c '. /opt/nvm/nvm.sh; npm install -g grunt' devilbox \ +# grunt_cli + && su -c '. /opt/nvm/nvm.sh; npm install -g grunt-cli' devilbox \ +# gulp + && su -c '. /opt/nvm/nvm.sh; npm install -g gulp' devilbox \ +# jsonlint + && su -c '. /opt/nvm/nvm.sh; npm install -g jsonlint' devilbox \ +# pm2 + && su -c '. /opt/nvm/nvm.sh; npm install -g pm2' devilbox \ +# mdlint + && su -c '. /opt/nvm/nvm.sh; npm install -g mdlint' devilbox \ +# webpack + && su -c '. /opt/nvm/nvm.sh; npm install -g webpack' devilbox \ +# webpack_cli + && su -c '. /opt/nvm/nvm.sh; npm install -g webpack-cli' devilbox \ + \ + && ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ + \ + && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ + && rm -rf /home/devilbox/.npm \ + && rm -rf /home/devilbox/.config \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) \ + \ + && (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) + + + +### +### Install Python pip packages +### +RUN set -x \ +# ansible + && pip install --no-cache-dir --force-reinstall ansible \ +# yamllint + && pip install --no-cache-dir --force-reinstall yamllint \ + \ + && rm -rf /root/.cache/pip \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) \ + \ + && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ + && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ + && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) + + +### +### Install Ruby gems +### +RUN set -x \ +# mixlib_config + && gem install mixlib-config -v 2.2.4 \ +# rb_inotify + && gem install rb-inotify -v 0.9.10 \ +# mdl + && gem install mdl \ +# scss_lint + && gem install scss_lint \ +# sass + && gem install sass \ + \ + && rm -rf /root/.gem \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -343,7 +408,7 @@ RUN set -x \ ### RUN \ { \ - echo "PATH=\${PATH}:/usr/local/bin:/usr/local/sbin:/usr/local/node/bin"; \ + echo "PATH=\${PATH}:/usr/local/bin:/usr/local/sbin:\${HOME}/.yarn/bin"; \ echo "export PATH"; \ echo ". /etc/bash-devilbox"; \ echo "if [ -d /etc/bashrc-devilbox.d/ ]; then"; \ @@ -379,7 +444,7 @@ RUN set -x \ RUN set -x \ && composer --version 2>/dev/null | grep -E 'version\s*[.0-9]+' \ - && ansible --version | grep -E '^ansible [.0-9]+$' \ + && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[.0-9]+' \ && mdl --version | grep -E '[.0-9]+' \ && scss-lint --version | grep -E '[.0-9]+' \ && eslint -v | grep -E '[.0-9]+' \ @@ -392,7 +457,6 @@ RUN set -x \ && drush7 --version | grep -E '7[.0-9]+\s*$' \ && drush8 --version | grep -E '8[.0-9]+\s*$' \ && git-flow version | grep -E '[.0-9]+' \ - && grunt --version | grep -E '[.0-9]+' \ && laravel --version | grep -E '(Installer|version)\s*[.0-9]+' \ && linkcheck --version | grep -E '^linkcheck\sv[.0-9]+' \ && su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew --version' | grep -E 'Homebrew\s*[.0-9]+' \ @@ -402,14 +466,32 @@ RUN set -x \ && phpcbf --version | grep -E 'version [.0-9]+' \ && php-cs-fixer --version 2>&1 | grep -E 'Fixer\s+(version\s*)?[-_.0-9]+\s+' \ && phpunit --version | grep -iE '^PHPUnit\s[.0-9]+' \ - && pm2 --no-daemon --version | grep -E '[.0-9]+' \ - && sass --version | grep -E '[.0-9]+' \ && symfony --version | grep -E 'version\s*[.0-9]+' \ - && webpack --version | grep -E '[.0-9]+' \ && wkhtmltopdf --version | grep -E "^wkhtmltopdf [.0-9]+\s+\(.+patched.+\)" \ && wp --allow-root --version | grep -E '[.0-9]+' \ + \ + && ansible --version | grep -E '^ansible [.0-9]+$' \ && yamllint --version 2>&1 | grep -E '[.0-9]+' \ - && true + \ + && eslint -v | grep -E '[.0-9]+' \ + && grunt --version | grep -E '[.0-9]+' \ + && gulp --version | grep -E '[.0-9]+' \ + && jsonlint --version | grep -E '[.0-9]+' \ + && pm2 --no-daemon --version | grep -E '[.0-9]+' \ + && mdlint --version | grep -E '[.0-9]+' \ + && webpack --version | grep -E '[.0-9]+' \ + \ + && mdl --version | grep -E '[.0-9]+' \ + && sass --version | grep -E '[.0-9]+' \ + \ + && rm -rf /home/devilbox/.config/ \ + && rm -rf /root/.ansible \ + && rm -rf /root/.console \ + && rm -rf /root/.composer \ + && rm -rf /root/.drush \ + && rm -rf /root/.pm2 \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) ### diff --git a/Dockerfiles/work/Dockerfile-5.5 b/Dockerfiles/work/Dockerfile-5.5 index 0b50140..17b528e 100644 --- a/Dockerfiles/work/Dockerfile-5.5 +++ b/Dockerfiles/work/Dockerfile-5.5 @@ -37,8 +37,6 @@ RUN set -x \ && echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu wily main" > /etc/apt/sources.list.d/git.list \ && APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5 \ && echo "deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.6 main" > /etc/apt/sources.list.d/mongo.list \ - && curl -sS "https://deb.nodesource.com/gpgkey/nodesource.gpg.key" 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ - && echo "deb http://deb.nodesource.com/node_8.x jessie main" > /etc/apt/sources.list.d/node.list \ && curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ && echo "deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main" > /etc/apt/sources.list.d/pgsql.list \ && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ @@ -82,15 +80,10 @@ RUN set -x \ nano \ net-tools \ netcat \ - nodejs \ openssh-client \ patch \ patchelf \ postgresql-client \ - python-cffi \ - python-dev \ - python-pip \ - python-wheel \ redis-tools \ rsync \ rubygems \ @@ -113,22 +106,42 @@ RUN set -x \ && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \ && rm -rf /var/lib/apt/lists/* \ \ -# Get newer pip version - && pip install --upgrade pip \ - && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false python-pip \ - && rm -rf /var/lib/apt/lists/* \ - \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) +### +### Install custom software +### RUN set -x \ # composer && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \ -# ansible - && /usr/local/bin/pip install --no-cache-dir --upgrade setuptools \ -&& /usr/local/bin/pip install --no-cache-dir ansible \ +# pip + && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ +&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ + libpython-dev \ +&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ +&& rm -rf /var/lib/apt/lists/* \ +\ +&& curl -sS https://bootstrap.pypa.io/get-pip.py | python \ + \ +# nvm + && git clone https://github.com/creationix/nvm /opt/nvm \ +&& cd /opt/nvm \ +&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ +\ +&& { \ + echo 'export NVM_DIR="/opt/nvm"'; \ + echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm'; \ + echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ +} >> /home/devilbox/.bashrc \ +\ +&& chown -R devilbox:devilbox /opt/nvm \ + \ + && su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ \ # asgardcms && COMPOSER_HOME="/usr/local/src/composer" composer global require asgardcms/asgardcms-installer \ @@ -142,16 +155,6 @@ RUN set -x \ && make install \ && cd / \ && rm -rf /usr/local/src/awesome-ci \ - \ - && gem install mixlib-config -v 2.2.4 \ -&& gem install rb-inotify -v 0.9.10 \ -&& gem install mdl \ -&& gem install scss_lint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y eslint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y jsonlint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y mdlint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y gulp \ -&& rm -rf /tmp/y \ \ # codeception && COMPOSER_HOME="/usr/local/src/composer" composer global require codeception/codeception \ @@ -195,11 +198,6 @@ RUN set -x \ && make install \ && cd / && rm -rf /tmp/gitflow \ \ -# grunt - && until yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y grunt; do sleep 1; done \ -&& until yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y grunt-cli; do sleep 1; done \ -&& rm -rf /tmp/y \ - \ # laravel && git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \ && cd /usr/local/src/laravel-installer \ @@ -226,7 +224,7 @@ RUN set -x \ && su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew config' \ \ # mhsendmail - && wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ + && wget --hsts-file=/dev/null https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ && chmod +x mhsendmail_linux_amd64 \ && mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ \ @@ -283,18 +281,9 @@ RUN set -x \ && COMPOSER_HOME="/usr/local/src/composer" composer global require "photoncms/installer" \ && ln -s /usr/local/src/composer/vendor/photoncms/installer/photon /usr/local/bin/photon \ \ -# pm2 - && until npm install pm2 -g; do sleep 1; done \ -# sass - && gem install sass \ # symfony && curl https://symfony.com/installer -L -o /usr/local/bin/symfony \ && chmod +x /usr/local/bin/symfony \ -# webpack - && yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y webpack \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y webpack-cli \ -&& rm -rf /tmp/y \ - \ # wkhtmltopdf && VERSION="$( curl -sSL https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+jessie_amd64\.deb' | head -1 )" \ && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ @@ -310,22 +299,12 @@ RUN set -x \ # wpcli && curl https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \ && chmod +x /usr/local/bin/wp \ -# yamllint - && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ -&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests libpython-dev python-setuptools libyaml-dev \ - \ - && /usr/local/bin/pip install --no-cache-dir yamllint \ - && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false libpython-dev python-setuptools libyaml-dev \ -&& rm -rf /var/lib/apt/lists/* \ - \ # cleanup && rm -rf /home/${MY_USER}/.*json \ && rm -rf /home/${MY_USER}/.cache \ && rm -rf /home/${MY_USER}/.composer \ && rm -rf /home/${MY_USER}/.config \ && rm -rf /home/${MY_USER}/.drush \ -&& rm -rf /home/${MY_USER}/.gem \ -&& rm -rf /home/${MY_USER}/.npm \ && rm -rf /home/${MY_USER}/.subversion \ && rm -rf /home/${MY_USER}/.v8* \ \ @@ -334,15 +313,101 @@ RUN set -x \ && rm -rf /root/.composer \ && rm -rf /root/.config \ && rm -rf /root/.drush \ -&& rm -rf /root/.gem \ -&& rm -rf /root/.npm \ && rm -rf /root/.subversion \ && rm -rf /root/.v8* \ \ && rm -rf /tmp/* \ +&& (rm -rf /tmp/.* || true) \ \ + \ + && (rm -rf /root/.gem || true ) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.npm || true) \ + \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.npm || true) \ \ && (rm -rf /usr/local/src/composer/cache/* || true) \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) + + +### +### Install Node npm packages (globally) +### +RUN set -x \ +# eslint + && su -c '. /opt/nvm/nvm.sh; npm install -g eslint' devilbox \ +# grunt + && su -c '. /opt/nvm/nvm.sh; npm install -g grunt' devilbox \ +# grunt_cli + && su -c '. /opt/nvm/nvm.sh; npm install -g grunt-cli' devilbox \ +# gulp + && su -c '. /opt/nvm/nvm.sh; npm install -g gulp' devilbox \ +# jsonlint + && su -c '. /opt/nvm/nvm.sh; npm install -g jsonlint' devilbox \ +# pm2 + && su -c '. /opt/nvm/nvm.sh; npm install -g pm2' devilbox \ +# mdlint + && su -c '. /opt/nvm/nvm.sh; npm install -g mdlint' devilbox \ +# webpack + && su -c '. /opt/nvm/nvm.sh; npm install -g webpack' devilbox \ +# webpack_cli + && su -c '. /opt/nvm/nvm.sh; npm install -g webpack-cli' devilbox \ + \ + && ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ + \ + && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ + && rm -rf /home/devilbox/.npm \ + && rm -rf /home/devilbox/.config \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) \ + \ + && (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) + + + +### +### Install Python pip packages +### +RUN set -x \ +# ansible + && pip install --no-cache-dir --force-reinstall ansible \ +# yamllint + && pip install --no-cache-dir --force-reinstall yamllint \ + \ + && rm -rf /root/.cache/pip \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) \ + \ + && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ + && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ + && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) + + +### +### Install Ruby gems +### +RUN set -x \ +# mixlib_config + && gem install mixlib-config -v 2.2.4 \ +# rb_inotify + && gem install rb-inotify -v 0.9.10 \ +# mdl + && gem install mdl \ +# scss_lint + && gem install scss_lint \ +# sass + && gem install sass \ + \ + && rm -rf /root/.gem \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -354,7 +419,7 @@ RUN set -x \ ### RUN \ { \ - echo "PATH=\${PATH}:/usr/local/bin:/usr/local/sbin:/usr/local/node/bin"; \ + echo "PATH=\${PATH}:/usr/local/bin:/usr/local/sbin:\${HOME}/.yarn/bin"; \ echo "export PATH"; \ echo ". /etc/bash-devilbox"; \ echo "if [ -d /etc/bashrc-devilbox.d/ ]; then"; \ @@ -390,7 +455,7 @@ RUN set -x \ RUN set -x \ && composer --version 2>/dev/null | grep -E 'version\s*[.0-9]+' \ - && ansible --version | grep -E '^ansible [.0-9]+$' \ + && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[.0-9]+' \ && asgardcms --version 2>/dev/null | grep -Ei 'AsgardCMS\sInstaller\s[.0-9]+' \ && mdl --version | grep -E '[.0-9]+' \ && scss-lint --version | grep -E '[.0-9]+' \ @@ -405,7 +470,6 @@ RUN set -x \ && drush8 --version | grep -E '8[.0-9]+\s*$' \ && drupal --version | grep -E 'Drupal Console Launcher\s*[.0-9]' \ && git-flow version | grep -E '[.0-9]+' \ - && grunt --version | grep -E '[.0-9]+' \ && laravel --version | grep -E '(Installer|version)\s*[.0-9]+' \ && linkcheck --version | grep -E '^linkcheck\sv[.0-9]+' \ && su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew --version' | grep -E 'Homebrew\s*[.0-9]+' \ @@ -416,14 +480,32 @@ RUN set -x \ && php-cs-fixer --version 2>&1 | grep -E 'Fixer\s+(version\s*)?[-_.0-9]+\s+' \ && phpunit --version | grep -iE '^PHPUnit\s[.0-9]+' \ && photon --version | grep -E 'Installer [.0-9]+' \ - && pm2 --no-daemon --version | grep -E '[.0-9]+' \ - && sass --version | grep -E '[.0-9]+' \ && symfony --version | grep -E 'version\s*[.0-9]+' \ - && webpack --version | grep -E '[.0-9]+' \ && wkhtmltopdf --version | grep -E "^wkhtmltopdf [.0-9]+\s+\(.+patched.+\)" \ && wp --allow-root --version | grep -E '[.0-9]+' \ + \ + && ansible --version | grep -E '^ansible [.0-9]+$' \ && yamllint --version 2>&1 | grep -E '[.0-9]+' \ - && true + \ + && eslint -v | grep -E '[.0-9]+' \ + && grunt --version | grep -E '[.0-9]+' \ + && gulp --version | grep -E '[.0-9]+' \ + && jsonlint --version | grep -E '[.0-9]+' \ + && pm2 --no-daemon --version | grep -E '[.0-9]+' \ + && mdlint --version | grep -E '[.0-9]+' \ + && webpack --version | grep -E '[.0-9]+' \ + \ + && mdl --version | grep -E '[.0-9]+' \ + && sass --version | grep -E '[.0-9]+' \ + \ + && rm -rf /home/devilbox/.config/ \ + && rm -rf /root/.ansible \ + && rm -rf /root/.console \ + && rm -rf /root/.composer \ + && rm -rf /root/.drush \ + && rm -rf /root/.pm2 \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) ### diff --git a/Dockerfiles/work/Dockerfile-5.6 b/Dockerfiles/work/Dockerfile-5.6 index 090ad06..88843a0 100644 --- a/Dockerfiles/work/Dockerfile-5.6 +++ b/Dockerfiles/work/Dockerfile-5.6 @@ -37,8 +37,6 @@ RUN set -x \ && echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu wily main" > /etc/apt/sources.list.d/git.list \ && APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5 \ && echo "deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.6 main" > /etc/apt/sources.list.d/mongo.list \ - && curl -sS "https://deb.nodesource.com/gpgkey/nodesource.gpg.key" 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ - && echo "deb http://deb.nodesource.com/node_8.x jessie main" > /etc/apt/sources.list.d/node.list \ && curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ && echo "deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main" > /etc/apt/sources.list.d/pgsql.list \ && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ @@ -82,15 +80,10 @@ RUN set -x \ nano \ net-tools \ netcat \ - nodejs \ openssh-client \ patch \ patchelf \ postgresql-client \ - python-cffi \ - python-dev \ - python-pip \ - python-wheel \ redis-tools \ rsync \ rubygems \ @@ -113,22 +106,42 @@ RUN set -x \ && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \ && rm -rf /var/lib/apt/lists/* \ \ -# Get newer pip version - && pip install --upgrade pip \ - && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false python-pip \ - && rm -rf /var/lib/apt/lists/* \ - \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) +### +### Install custom software +### RUN set -x \ # composer && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \ -# ansible - && /usr/local/bin/pip install --no-cache-dir --upgrade setuptools \ -&& /usr/local/bin/pip install --no-cache-dir ansible \ +# pip + && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ +&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ + libpython-dev \ +&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ +&& rm -rf /var/lib/apt/lists/* \ +\ +&& curl -sS https://bootstrap.pypa.io/get-pip.py | python \ + \ +# nvm + && git clone https://github.com/creationix/nvm /opt/nvm \ +&& cd /opt/nvm \ +&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ +\ +&& { \ + echo 'export NVM_DIR="/opt/nvm"'; \ + echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm'; \ + echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ +} >> /home/devilbox/.bashrc \ +\ +&& chown -R devilbox:devilbox /opt/nvm \ + \ + && su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ \ # asgardcms && COMPOSER_HOME="/usr/local/src/composer" composer global require asgardcms/asgardcms-installer \ @@ -142,16 +155,6 @@ RUN set -x \ && make install \ && cd / \ && rm -rf /usr/local/src/awesome-ci \ - \ - && gem install mixlib-config -v 2.2.4 \ -&& gem install rb-inotify -v 0.9.10 \ -&& gem install mdl \ -&& gem install scss_lint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y eslint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y jsonlint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y mdlint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y gulp \ -&& rm -rf /tmp/y \ \ # codeception && COMPOSER_HOME="/usr/local/src/composer" composer global require codeception/codeception \ @@ -208,11 +211,6 @@ RUN set -x \ && make install \ && cd / && rm -rf /tmp/gitflow \ \ -# grunt - && until yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y grunt; do sleep 1; done \ -&& until yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y grunt-cli; do sleep 1; done \ -&& rm -rf /tmp/y \ - \ # laravel && git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \ && cd /usr/local/src/laravel-installer \ @@ -239,7 +237,7 @@ RUN set -x \ && su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew config' \ \ # mhsendmail - && wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ + && wget --hsts-file=/dev/null https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ && chmod +x mhsendmail_linux_amd64 \ && mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ \ @@ -296,18 +294,9 @@ RUN set -x \ && COMPOSER_HOME="/usr/local/src/composer" composer global require "photoncms/installer" \ && ln -s /usr/local/src/composer/vendor/photoncms/installer/photon /usr/local/bin/photon \ \ -# pm2 - && until npm install pm2 -g; do sleep 1; done \ -# sass - && gem install sass \ # symfony && curl https://symfony.com/installer -L -o /usr/local/bin/symfony \ && chmod +x /usr/local/bin/symfony \ -# webpack - && yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y webpack \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y webpack-cli \ -&& rm -rf /tmp/y \ - \ # wkhtmltopdf && VERSION="$( curl -sSL https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+stretch_amd64\.deb' | head -1 )" \ && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ @@ -323,22 +312,12 @@ RUN set -x \ # wpcli && curl https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \ && chmod +x /usr/local/bin/wp \ -# yamllint - && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ -&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests libpython-dev python-setuptools libyaml-dev \ - \ - && /usr/local/bin/pip install --no-cache-dir yamllint \ - && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false libpython-dev python-setuptools libyaml-dev \ -&& rm -rf /var/lib/apt/lists/* \ - \ # cleanup && rm -rf /home/${MY_USER}/.*json \ && rm -rf /home/${MY_USER}/.cache \ && rm -rf /home/${MY_USER}/.composer \ && rm -rf /home/${MY_USER}/.config \ && rm -rf /home/${MY_USER}/.drush \ -&& rm -rf /home/${MY_USER}/.gem \ -&& rm -rf /home/${MY_USER}/.npm \ && rm -rf /home/${MY_USER}/.subversion \ && rm -rf /home/${MY_USER}/.v8* \ \ @@ -347,15 +326,101 @@ RUN set -x \ && rm -rf /root/.composer \ && rm -rf /root/.config \ && rm -rf /root/.drush \ -&& rm -rf /root/.gem \ -&& rm -rf /root/.npm \ && rm -rf /root/.subversion \ && rm -rf /root/.v8* \ \ && rm -rf /tmp/* \ +&& (rm -rf /tmp/.* || true) \ \ + \ + && (rm -rf /root/.gem || true ) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.npm || true) \ + \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.npm || true) \ \ && (rm -rf /usr/local/src/composer/cache/* || true) \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) + + +### +### Install Node npm packages (globally) +### +RUN set -x \ +# eslint + && su -c '. /opt/nvm/nvm.sh; npm install -g eslint' devilbox \ +# grunt + && su -c '. /opt/nvm/nvm.sh; npm install -g grunt' devilbox \ +# grunt_cli + && su -c '. /opt/nvm/nvm.sh; npm install -g grunt-cli' devilbox \ +# gulp + && su -c '. /opt/nvm/nvm.sh; npm install -g gulp' devilbox \ +# jsonlint + && su -c '. /opt/nvm/nvm.sh; npm install -g jsonlint' devilbox \ +# pm2 + && su -c '. /opt/nvm/nvm.sh; npm install -g pm2' devilbox \ +# mdlint + && su -c '. /opt/nvm/nvm.sh; npm install -g mdlint' devilbox \ +# webpack + && su -c '. /opt/nvm/nvm.sh; npm install -g webpack' devilbox \ +# webpack_cli + && su -c '. /opt/nvm/nvm.sh; npm install -g webpack-cli' devilbox \ + \ + && ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ + \ + && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ + && rm -rf /home/devilbox/.npm \ + && rm -rf /home/devilbox/.config \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) \ + \ + && (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) + + + +### +### Install Python pip packages +### +RUN set -x \ +# ansible + && pip install --no-cache-dir --force-reinstall ansible \ +# yamllint + && pip install --no-cache-dir --force-reinstall yamllint \ + \ + && rm -rf /root/.cache/pip \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) \ + \ + && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ + && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ + && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) + + +### +### Install Ruby gems +### +RUN set -x \ +# mixlib_config + && gem install mixlib-config -v 2.2.4 \ +# rb_inotify + && gem install rb-inotify -v 0.9.10 \ +# mdl + && gem install mdl \ +# scss_lint + && gem install scss_lint \ +# sass + && gem install sass \ + \ + && rm -rf /root/.gem \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -367,7 +432,7 @@ RUN set -x \ ### RUN \ { \ - echo "PATH=\${PATH}:/usr/local/bin:/usr/local/sbin:/usr/local/node/bin"; \ + echo "PATH=\${PATH}:/usr/local/bin:/usr/local/sbin:\${HOME}/.yarn/bin"; \ echo "export PATH"; \ echo ". /etc/bash-devilbox"; \ echo "if [ -d /etc/bashrc-devilbox.d/ ]; then"; \ @@ -403,7 +468,7 @@ RUN set -x \ RUN set -x \ && composer --version 2>/dev/null | grep -E 'version\s*[.0-9]+' \ - && ansible --version | grep -E '^ansible [.0-9]+$' \ + && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[.0-9]+' \ && asgardcms --version 2>/dev/null | grep -Ei 'AsgardCMS\sInstaller\s[.0-9]+' \ && mdl --version | grep -E '[.0-9]+' \ && scss-lint --version | grep -E '[.0-9]+' \ @@ -419,7 +484,6 @@ RUN set -x \ && drush9 --version | grep -E '9[.0-9]+\s*$' \ && drupal --version | grep -E 'Drupal Console Launcher\s*[.0-9]' \ && git-flow version | grep -E '[.0-9]+' \ - && grunt --version | grep -E '[.0-9]+' \ && laravel --version | grep -E '(Installer|version)\s*[.0-9]+' \ && linkcheck --version | grep -E '^linkcheck\sv[.0-9]+' \ && su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew --version' | grep -E 'Homebrew\s*[.0-9]+' \ @@ -430,14 +494,32 @@ RUN set -x \ && php-cs-fixer --version 2>&1 | grep -E 'Fixer\s+(version\s*)?[-_.0-9]+\s+' \ && phpunit --version | grep -iE '^PHPUnit\s[.0-9]+' \ && photon --version | grep -E 'Installer [.0-9]+' \ - && pm2 --no-daemon --version | grep -E '[.0-9]+' \ - && sass --version | grep -E '[.0-9]+' \ && symfony --version | grep -E 'version\s*[.0-9]+' \ - && webpack --version | grep -E '[.0-9]+' \ && wkhtmltopdf --version | grep -E "^wkhtmltopdf [.0-9]+\s+\(.+patched.+\)" \ && wp --allow-root --version | grep -E '[.0-9]+' \ + \ + && ansible --version | grep -E '^ansible [.0-9]+$' \ && yamllint --version 2>&1 | grep -E '[.0-9]+' \ - && true + \ + && eslint -v | grep -E '[.0-9]+' \ + && grunt --version | grep -E '[.0-9]+' \ + && gulp --version | grep -E '[.0-9]+' \ + && jsonlint --version | grep -E '[.0-9]+' \ + && pm2 --no-daemon --version | grep -E '[.0-9]+' \ + && mdlint --version | grep -E '[.0-9]+' \ + && webpack --version | grep -E '[.0-9]+' \ + \ + && mdl --version | grep -E '[.0-9]+' \ + && sass --version | grep -E '[.0-9]+' \ + \ + && rm -rf /home/devilbox/.config/ \ + && rm -rf /root/.ansible \ + && rm -rf /root/.console \ + && rm -rf /root/.composer \ + && rm -rf /root/.drush \ + && rm -rf /root/.pm2 \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) ### diff --git a/Dockerfiles/work/Dockerfile-7.0 b/Dockerfiles/work/Dockerfile-7.0 index 5eefe53..2079d75 100644 --- a/Dockerfiles/work/Dockerfile-7.0 +++ b/Dockerfiles/work/Dockerfile-7.0 @@ -37,8 +37,6 @@ RUN set -x \ && echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu wily main" > /etc/apt/sources.list.d/git.list \ && APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5 \ && echo "deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.6 main" > /etc/apt/sources.list.d/mongo.list \ - && curl -sS "https://deb.nodesource.com/gpgkey/nodesource.gpg.key" 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ - && echo "deb http://deb.nodesource.com/node_8.x jessie main" > /etc/apt/sources.list.d/node.list \ && curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ && echo "deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main" > /etc/apt/sources.list.d/pgsql.list \ && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ @@ -82,15 +80,10 @@ RUN set -x \ nano \ net-tools \ netcat \ - nodejs \ openssh-client \ patch \ patchelf \ postgresql-client \ - python-cffi \ - python-dev \ - python-pip \ - python-wheel \ redis-tools \ rsync \ rubygems \ @@ -113,22 +106,42 @@ RUN set -x \ && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \ && rm -rf /var/lib/apt/lists/* \ \ -# Get newer pip version - && pip install --upgrade pip \ - && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false python-pip \ - && rm -rf /var/lib/apt/lists/* \ - \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) +### +### Install custom software +### RUN set -x \ # composer && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \ -# ansible - && /usr/local/bin/pip install --no-cache-dir --upgrade setuptools \ -&& /usr/local/bin/pip install --no-cache-dir ansible \ +# pip + && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ +&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ + libpython-dev \ +&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ +&& rm -rf /var/lib/apt/lists/* \ +\ +&& curl -sS https://bootstrap.pypa.io/get-pip.py | python \ + \ +# nvm + && git clone https://github.com/creationix/nvm /opt/nvm \ +&& cd /opt/nvm \ +&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ +\ +&& { \ + echo 'export NVM_DIR="/opt/nvm"'; \ + echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm'; \ + echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ +} >> /home/devilbox/.bashrc \ +\ +&& chown -R devilbox:devilbox /opt/nvm \ + \ + && su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ \ # asgardcms && COMPOSER_HOME="/usr/local/src/composer" composer global require asgardcms/asgardcms-installer \ @@ -142,16 +155,6 @@ RUN set -x \ && make install \ && cd / \ && rm -rf /usr/local/src/awesome-ci \ - \ - && gem install mixlib-config -v 2.2.4 \ -&& gem install rb-inotify -v 0.9.10 \ -&& gem install mdl \ -&& gem install scss_lint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y eslint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y jsonlint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y mdlint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y gulp \ -&& rm -rf /tmp/y \ \ # codeception && COMPOSER_HOME="/usr/local/src/composer" composer global require codeception/codeception \ @@ -208,11 +211,6 @@ RUN set -x \ && make install \ && cd / && rm -rf /tmp/gitflow \ \ -# grunt - && until yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y grunt; do sleep 1; done \ -&& until yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y grunt-cli; do sleep 1; done \ -&& rm -rf /tmp/y \ - \ # laravel && git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \ && cd /usr/local/src/laravel-installer \ @@ -239,7 +237,7 @@ RUN set -x \ && su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew config' \ \ # mhsendmail - && wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ + && wget --hsts-file=/dev/null https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ && chmod +x mhsendmail_linux_amd64 \ && mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ \ @@ -296,18 +294,9 @@ RUN set -x \ && COMPOSER_HOME="/usr/local/src/composer" composer global require "photoncms/installer" \ && ln -s /usr/local/src/composer/vendor/photoncms/installer/photon /usr/local/bin/photon \ \ -# pm2 - && until npm install pm2 -g; do sleep 1; done \ -# sass - && gem install sass \ # symfony && curl https://symfony.com/installer -L -o /usr/local/bin/symfony \ && chmod +x /usr/local/bin/symfony \ -# webpack - && yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y webpack \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y webpack-cli \ -&& rm -rf /tmp/y \ - \ # wkhtmltopdf && VERSION="$( curl -sSL https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+stretch_amd64\.deb' | head -1 )" \ && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ @@ -323,22 +312,12 @@ RUN set -x \ # wpcli && curl https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \ && chmod +x /usr/local/bin/wp \ -# yamllint - && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ -&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests libpython-dev python-setuptools libyaml-dev \ - \ - && /usr/local/bin/pip install --no-cache-dir yamllint \ - && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false libpython-dev python-setuptools libyaml-dev \ -&& rm -rf /var/lib/apt/lists/* \ - \ # cleanup && rm -rf /home/${MY_USER}/.*json \ && rm -rf /home/${MY_USER}/.cache \ && rm -rf /home/${MY_USER}/.composer \ && rm -rf /home/${MY_USER}/.config \ && rm -rf /home/${MY_USER}/.drush \ -&& rm -rf /home/${MY_USER}/.gem \ -&& rm -rf /home/${MY_USER}/.npm \ && rm -rf /home/${MY_USER}/.subversion \ && rm -rf /home/${MY_USER}/.v8* \ \ @@ -347,15 +326,101 @@ RUN set -x \ && rm -rf /root/.composer \ && rm -rf /root/.config \ && rm -rf /root/.drush \ -&& rm -rf /root/.gem \ -&& rm -rf /root/.npm \ && rm -rf /root/.subversion \ && rm -rf /root/.v8* \ \ && rm -rf /tmp/* \ +&& (rm -rf /tmp/.* || true) \ \ + \ + && (rm -rf /root/.gem || true ) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.npm || true) \ + \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.npm || true) \ \ && (rm -rf /usr/local/src/composer/cache/* || true) \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) + + +### +### Install Node npm packages (globally) +### +RUN set -x \ +# eslint + && su -c '. /opt/nvm/nvm.sh; npm install -g eslint' devilbox \ +# grunt + && su -c '. /opt/nvm/nvm.sh; npm install -g grunt' devilbox \ +# grunt_cli + && su -c '. /opt/nvm/nvm.sh; npm install -g grunt-cli' devilbox \ +# gulp + && su -c '. /opt/nvm/nvm.sh; npm install -g gulp' devilbox \ +# jsonlint + && su -c '. /opt/nvm/nvm.sh; npm install -g jsonlint' devilbox \ +# pm2 + && su -c '. /opt/nvm/nvm.sh; npm install -g pm2' devilbox \ +# mdlint + && su -c '. /opt/nvm/nvm.sh; npm install -g mdlint' devilbox \ +# webpack + && su -c '. /opt/nvm/nvm.sh; npm install -g webpack' devilbox \ +# webpack_cli + && su -c '. /opt/nvm/nvm.sh; npm install -g webpack-cli' devilbox \ + \ + && ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ + \ + && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ + && rm -rf /home/devilbox/.npm \ + && rm -rf /home/devilbox/.config \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) \ + \ + && (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) + + + +### +### Install Python pip packages +### +RUN set -x \ +# ansible + && pip install --no-cache-dir --force-reinstall ansible \ +# yamllint + && pip install --no-cache-dir --force-reinstall yamllint \ + \ + && rm -rf /root/.cache/pip \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) \ + \ + && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ + && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ + && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) + + +### +### Install Ruby gems +### +RUN set -x \ +# mixlib_config + && gem install mixlib-config -v 2.2.4 \ +# rb_inotify + && gem install rb-inotify -v 0.9.10 \ +# mdl + && gem install mdl \ +# scss_lint + && gem install scss_lint \ +# sass + && gem install sass \ + \ + && rm -rf /root/.gem \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -367,7 +432,7 @@ RUN set -x \ ### RUN \ { \ - echo "PATH=\${PATH}:/usr/local/bin:/usr/local/sbin:/usr/local/node/bin"; \ + echo "PATH=\${PATH}:/usr/local/bin:/usr/local/sbin:\${HOME}/.yarn/bin"; \ echo "export PATH"; \ echo ". /etc/bash-devilbox"; \ echo "if [ -d /etc/bashrc-devilbox.d/ ]; then"; \ @@ -403,7 +468,7 @@ RUN set -x \ RUN set -x \ && composer --version 2>/dev/null | grep -E 'version\s*[.0-9]+' \ - && ansible --version | grep -E '^ansible [.0-9]+$' \ + && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[.0-9]+' \ && asgardcms --version 2>/dev/null | grep -Ei 'AsgardCMS\sInstaller\s[.0-9]+' \ && mdl --version | grep -E '[.0-9]+' \ && scss-lint --version | grep -E '[.0-9]+' \ @@ -419,7 +484,6 @@ RUN set -x \ && drush9 --version | grep -E '9[.0-9]+\s*$' \ && drupal --version | grep -E 'Drupal Console Launcher\s*[.0-9]' \ && git-flow version | grep -E '[.0-9]+' \ - && grunt --version | grep -E '[.0-9]+' \ && laravel --version | grep -E '(Installer|version)\s*[.0-9]+' \ && linkcheck --version | grep -E '^linkcheck\sv[.0-9]+' \ && su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew --version' | grep -E 'Homebrew\s*[.0-9]+' \ @@ -430,14 +494,32 @@ RUN set -x \ && php-cs-fixer --version 2>&1 | grep -E 'Fixer\s+(version\s*)?[-_.0-9]+\s+' \ && phpunit --version | grep -iE '^PHPUnit\s[.0-9]+' \ && photon --version | grep -E 'Installer [.0-9]+' \ - && pm2 --no-daemon --version | grep -E '[.0-9]+' \ - && sass --version | grep -E '[.0-9]+' \ && symfony --version | grep -E 'version\s*[.0-9]+' \ - && webpack --version | grep -E '[.0-9]+' \ && wkhtmltopdf --version | grep -E "^wkhtmltopdf [.0-9]+\s+\(.+patched.+\)" \ && wp --allow-root --version | grep -E '[.0-9]+' \ + \ + && ansible --version | grep -E '^ansible [.0-9]+$' \ && yamllint --version 2>&1 | grep -E '[.0-9]+' \ - && true + \ + && eslint -v | grep -E '[.0-9]+' \ + && grunt --version | grep -E '[.0-9]+' \ + && gulp --version | grep -E '[.0-9]+' \ + && jsonlint --version | grep -E '[.0-9]+' \ + && pm2 --no-daemon --version | grep -E '[.0-9]+' \ + && mdlint --version | grep -E '[.0-9]+' \ + && webpack --version | grep -E '[.0-9]+' \ + \ + && mdl --version | grep -E '[.0-9]+' \ + && sass --version | grep -E '[.0-9]+' \ + \ + && rm -rf /home/devilbox/.config/ \ + && rm -rf /root/.ansible \ + && rm -rf /root/.console \ + && rm -rf /root/.composer \ + && rm -rf /root/.drush \ + && rm -rf /root/.pm2 \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) ### diff --git a/Dockerfiles/work/Dockerfile-7.1 b/Dockerfiles/work/Dockerfile-7.1 index b93e122..2f61ed9 100644 --- a/Dockerfiles/work/Dockerfile-7.1 +++ b/Dockerfiles/work/Dockerfile-7.1 @@ -37,8 +37,6 @@ RUN set -x \ && echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu wily main" > /etc/apt/sources.list.d/git.list \ && APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5 \ && echo "deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.6 main" > /etc/apt/sources.list.d/mongo.list \ - && curl -sS "https://deb.nodesource.com/gpgkey/nodesource.gpg.key" 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ - && echo "deb http://deb.nodesource.com/node_8.x jessie main" > /etc/apt/sources.list.d/node.list \ && curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ && echo "deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main" > /etc/apt/sources.list.d/pgsql.list \ && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ @@ -82,15 +80,10 @@ RUN set -x \ nano \ net-tools \ netcat \ - nodejs \ openssh-client \ patch \ patchelf \ postgresql-client \ - python-cffi \ - python-dev \ - python-pip \ - python-wheel \ redis-tools \ rsync \ rubygems \ @@ -113,22 +106,42 @@ RUN set -x \ && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \ && rm -rf /var/lib/apt/lists/* \ \ -# Get newer pip version - && pip install --upgrade pip \ - && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false python-pip \ - && rm -rf /var/lib/apt/lists/* \ - \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) +### +### Install custom software +### RUN set -x \ # composer && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \ -# ansible - && /usr/local/bin/pip install --no-cache-dir --upgrade setuptools \ -&& /usr/local/bin/pip install --no-cache-dir ansible \ +# pip + && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ +&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ + libpython-dev \ +&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ +&& rm -rf /var/lib/apt/lists/* \ +\ +&& curl -sS https://bootstrap.pypa.io/get-pip.py | python \ + \ +# nvm + && git clone https://github.com/creationix/nvm /opt/nvm \ +&& cd /opt/nvm \ +&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ +\ +&& { \ + echo 'export NVM_DIR="/opt/nvm"'; \ + echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm'; \ + echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ +} >> /home/devilbox/.bashrc \ +\ +&& chown -R devilbox:devilbox /opt/nvm \ + \ + && su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ \ # asgardcms && COMPOSER_HOME="/usr/local/src/composer" composer global require asgardcms/asgardcms-installer \ @@ -142,16 +155,6 @@ RUN set -x \ && make install \ && cd / \ && rm -rf /usr/local/src/awesome-ci \ - \ - && gem install mixlib-config -v 2.2.4 \ -&& gem install rb-inotify -v 0.9.10 \ -&& gem install mdl \ -&& gem install scss_lint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y eslint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y jsonlint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y mdlint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y gulp \ -&& rm -rf /tmp/y \ \ # codeception && COMPOSER_HOME="/usr/local/src/composer" composer global require codeception/codeception \ @@ -208,11 +211,6 @@ RUN set -x \ && make install \ && cd / && rm -rf /tmp/gitflow \ \ -# grunt - && until yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y grunt; do sleep 1; done \ -&& until yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y grunt-cli; do sleep 1; done \ -&& rm -rf /tmp/y \ - \ # laravel && git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \ && cd /usr/local/src/laravel-installer \ @@ -239,7 +237,7 @@ RUN set -x \ && su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew config' \ \ # mhsendmail - && wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ + && wget --hsts-file=/dev/null https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ && chmod +x mhsendmail_linux_amd64 \ && mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ \ @@ -296,18 +294,9 @@ RUN set -x \ && COMPOSER_HOME="/usr/local/src/composer" composer global require "photoncms/installer" \ && ln -s /usr/local/src/composer/vendor/photoncms/installer/photon /usr/local/bin/photon \ \ -# pm2 - && until npm install pm2 -g; do sleep 1; done \ -# sass - && gem install sass \ # symfony && curl https://symfony.com/installer -L -o /usr/local/bin/symfony \ && chmod +x /usr/local/bin/symfony \ -# webpack - && yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y webpack \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y webpack-cli \ -&& rm -rf /tmp/y \ - \ # wkhtmltopdf && VERSION="$( curl -sSL https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+stretch_amd64\.deb' | head -1 )" \ && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ @@ -323,22 +312,12 @@ RUN set -x \ # wpcli && curl https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \ && chmod +x /usr/local/bin/wp \ -# yamllint - && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ -&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests libpython-dev python-setuptools libyaml-dev \ - \ - && /usr/local/bin/pip install --no-cache-dir yamllint \ - && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false libpython-dev python-setuptools libyaml-dev \ -&& rm -rf /var/lib/apt/lists/* \ - \ # cleanup && rm -rf /home/${MY_USER}/.*json \ && rm -rf /home/${MY_USER}/.cache \ && rm -rf /home/${MY_USER}/.composer \ && rm -rf /home/${MY_USER}/.config \ && rm -rf /home/${MY_USER}/.drush \ -&& rm -rf /home/${MY_USER}/.gem \ -&& rm -rf /home/${MY_USER}/.npm \ && rm -rf /home/${MY_USER}/.subversion \ && rm -rf /home/${MY_USER}/.v8* \ \ @@ -347,15 +326,101 @@ RUN set -x \ && rm -rf /root/.composer \ && rm -rf /root/.config \ && rm -rf /root/.drush \ -&& rm -rf /root/.gem \ -&& rm -rf /root/.npm \ && rm -rf /root/.subversion \ && rm -rf /root/.v8* \ \ && rm -rf /tmp/* \ +&& (rm -rf /tmp/.* || true) \ \ + \ + && (rm -rf /root/.gem || true ) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.npm || true) \ + \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.npm || true) \ \ && (rm -rf /usr/local/src/composer/cache/* || true) \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) + + +### +### Install Node npm packages (globally) +### +RUN set -x \ +# eslint + && su -c '. /opt/nvm/nvm.sh; npm install -g eslint' devilbox \ +# grunt + && su -c '. /opt/nvm/nvm.sh; npm install -g grunt' devilbox \ +# grunt_cli + && su -c '. /opt/nvm/nvm.sh; npm install -g grunt-cli' devilbox \ +# gulp + && su -c '. /opt/nvm/nvm.sh; npm install -g gulp' devilbox \ +# jsonlint + && su -c '. /opt/nvm/nvm.sh; npm install -g jsonlint' devilbox \ +# pm2 + && su -c '. /opt/nvm/nvm.sh; npm install -g pm2' devilbox \ +# mdlint + && su -c '. /opt/nvm/nvm.sh; npm install -g mdlint' devilbox \ +# webpack + && su -c '. /opt/nvm/nvm.sh; npm install -g webpack' devilbox \ +# webpack_cli + && su -c '. /opt/nvm/nvm.sh; npm install -g webpack-cli' devilbox \ + \ + && ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ + \ + && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ + && rm -rf /home/devilbox/.npm \ + && rm -rf /home/devilbox/.config \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) \ + \ + && (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) + + + +### +### Install Python pip packages +### +RUN set -x \ +# ansible + && pip install --no-cache-dir --force-reinstall ansible \ +# yamllint + && pip install --no-cache-dir --force-reinstall yamllint \ + \ + && rm -rf /root/.cache/pip \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) \ + \ + && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ + && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ + && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) + + +### +### Install Ruby gems +### +RUN set -x \ +# mixlib_config + && gem install mixlib-config -v 2.2.4 \ +# rb_inotify + && gem install rb-inotify -v 0.9.10 \ +# mdl + && gem install mdl \ +# scss_lint + && gem install scss_lint \ +# sass + && gem install sass \ + \ + && rm -rf /root/.gem \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -367,7 +432,7 @@ RUN set -x \ ### RUN \ { \ - echo "PATH=\${PATH}:/usr/local/bin:/usr/local/sbin:/usr/local/node/bin"; \ + echo "PATH=\${PATH}:/usr/local/bin:/usr/local/sbin:\${HOME}/.yarn/bin"; \ echo "export PATH"; \ echo ". /etc/bash-devilbox"; \ echo "if [ -d /etc/bashrc-devilbox.d/ ]; then"; \ @@ -403,7 +468,7 @@ RUN set -x \ RUN set -x \ && composer --version 2>/dev/null | grep -E 'version\s*[.0-9]+' \ - && ansible --version | grep -E '^ansible [.0-9]+$' \ + && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[.0-9]+' \ && asgardcms --version 2>/dev/null | grep -Ei 'AsgardCMS\sInstaller\s[.0-9]+' \ && mdl --version | grep -E '[.0-9]+' \ && scss-lint --version | grep -E '[.0-9]+' \ @@ -419,7 +484,6 @@ RUN set -x \ && drush9 --version | grep -E '9[.0-9]+\s*$' \ && drupal --version | grep -E 'Drupal Console Launcher\s*[.0-9]' \ && git-flow version | grep -E '[.0-9]+' \ - && grunt --version | grep -E '[.0-9]+' \ && laravel --version | grep -E '(Installer|version)\s*[.0-9]+' \ && linkcheck --version | grep -E '^linkcheck\sv[.0-9]+' \ && su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew --version' | grep -E 'Homebrew\s*[.0-9]+' \ @@ -430,14 +494,32 @@ RUN set -x \ && php-cs-fixer --version 2>&1 | grep -E 'Fixer\s+(version\s*)?[-_.0-9]+\s+' \ && phpunit --version | grep -iE '^PHPUnit\s[.0-9]+' \ && photon --version | grep -E 'Installer [.0-9]+' \ - && pm2 --no-daemon --version | grep -E '[.0-9]+' \ - && sass --version | grep -E '[.0-9]+' \ && symfony --version | grep -E 'version\s*[.0-9]+' \ - && webpack --version | grep -E '[.0-9]+' \ && wkhtmltopdf --version | grep -E "^wkhtmltopdf [.0-9]+\s+\(.+patched.+\)" \ && wp --allow-root --version | grep -E '[.0-9]+' \ + \ + && ansible --version | grep -E '^ansible [.0-9]+$' \ && yamllint --version 2>&1 | grep -E '[.0-9]+' \ - && true + \ + && eslint -v | grep -E '[.0-9]+' \ + && grunt --version | grep -E '[.0-9]+' \ + && gulp --version | grep -E '[.0-9]+' \ + && jsonlint --version | grep -E '[.0-9]+' \ + && pm2 --no-daemon --version | grep -E '[.0-9]+' \ + && mdlint --version | grep -E '[.0-9]+' \ + && webpack --version | grep -E '[.0-9]+' \ + \ + && mdl --version | grep -E '[.0-9]+' \ + && sass --version | grep -E '[.0-9]+' \ + \ + && rm -rf /home/devilbox/.config/ \ + && rm -rf /root/.ansible \ + && rm -rf /root/.console \ + && rm -rf /root/.composer \ + && rm -rf /root/.drush \ + && rm -rf /root/.pm2 \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) ### diff --git a/Dockerfiles/work/Dockerfile-7.2 b/Dockerfiles/work/Dockerfile-7.2 index 9d61fc6..da0e871 100644 --- a/Dockerfiles/work/Dockerfile-7.2 +++ b/Dockerfiles/work/Dockerfile-7.2 @@ -37,8 +37,6 @@ RUN set -x \ && echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu artful main" > /etc/apt/sources.list.d/git.list \ && APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5 \ && echo "deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.6 main" > /etc/apt/sources.list.d/mongo.list \ - && curl -sS "https://deb.nodesource.com/gpgkey/nodesource.gpg.key" 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ - && echo "deb http://deb.nodesource.com/node_8.x stretch main" > /etc/apt/sources.list.d/node.list \ && curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ && echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main" > /etc/apt/sources.list.d/pgsql.list \ && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ @@ -82,15 +80,10 @@ RUN set -x \ nano \ net-tools \ netcat \ - nodejs \ openssh-client \ patch \ patchelf \ postgresql-client \ - python-cffi \ - python-dev \ - python-pip \ - python-wheel \ redis-tools \ rsync \ rubygems \ @@ -113,22 +106,42 @@ RUN set -x \ && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \ && rm -rf /var/lib/apt/lists/* \ \ -# Get newer pip version - && pip install --upgrade pip \ - && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false python-pip \ - && rm -rf /var/lib/apt/lists/* \ - \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) +### +### Install custom software +### RUN set -x \ # composer && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \ -# ansible - && /usr/local/bin/pip install --no-cache-dir --upgrade setuptools \ -&& /usr/local/bin/pip install --no-cache-dir ansible \ +# pip + && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ +&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ + libpython-dev \ +&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ +&& rm -rf /var/lib/apt/lists/* \ +\ +&& curl -sS https://bootstrap.pypa.io/get-pip.py | python \ + \ +# nvm + && git clone https://github.com/creationix/nvm /opt/nvm \ +&& cd /opt/nvm \ +&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ +\ +&& { \ + echo 'export NVM_DIR="/opt/nvm"'; \ + echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm'; \ + echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ +} >> /home/devilbox/.bashrc \ +\ +&& chown -R devilbox:devilbox /opt/nvm \ + \ + && su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ \ # asgardcms && COMPOSER_HOME="/usr/local/src/composer" composer global require asgardcms/asgardcms-installer \ @@ -142,16 +155,6 @@ RUN set -x \ && make install \ && cd / \ && rm -rf /usr/local/src/awesome-ci \ - \ - && gem install mixlib-config -v 2.2.4 \ -&& gem install rb-inotify -v 0.9.10 \ -&& gem install mdl \ -&& gem install scss_lint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y eslint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y jsonlint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y mdlint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y gulp \ -&& rm -rf /tmp/y \ \ # codeception && COMPOSER_HOME="/usr/local/src/composer" composer global require codeception/codeception \ @@ -208,11 +211,6 @@ RUN set -x \ && make install \ && cd / && rm -rf /tmp/gitflow \ \ -# grunt - && until yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y grunt; do sleep 1; done \ -&& until yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y grunt-cli; do sleep 1; done \ -&& rm -rf /tmp/y \ - \ # laravel && git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \ && cd /usr/local/src/laravel-installer \ @@ -239,7 +237,7 @@ RUN set -x \ && su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew config' \ \ # mhsendmail - && wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ + && wget --hsts-file=/dev/null https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ && chmod +x mhsendmail_linux_amd64 \ && mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ \ @@ -296,18 +294,9 @@ RUN set -x \ && COMPOSER_HOME="/usr/local/src/composer" composer global require "photoncms/installer" \ && ln -s /usr/local/src/composer/vendor/photoncms/installer/photon /usr/local/bin/photon \ \ -# pm2 - && until npm install pm2 -g; do sleep 1; done \ -# sass - && gem install sass \ # symfony && curl https://symfony.com/installer -L -o /usr/local/bin/symfony \ && chmod +x /usr/local/bin/symfony \ -# webpack - && yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y webpack \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y webpack-cli \ -&& rm -rf /tmp/y \ - \ # wkhtmltopdf && VERSION="$( curl -sSL https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+stretch_amd64\.deb' | head -1 )" \ && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ @@ -323,22 +312,12 @@ RUN set -x \ # wpcli && curl https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \ && chmod +x /usr/local/bin/wp \ -# yamllint - && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ -&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests libpython-dev python-setuptools libyaml-dev \ - \ - && /usr/local/bin/pip install --no-cache-dir yamllint \ - && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false libpython-dev python-setuptools libyaml-dev \ -&& rm -rf /var/lib/apt/lists/* \ - \ # cleanup && rm -rf /home/${MY_USER}/.*json \ && rm -rf /home/${MY_USER}/.cache \ && rm -rf /home/${MY_USER}/.composer \ && rm -rf /home/${MY_USER}/.config \ && rm -rf /home/${MY_USER}/.drush \ -&& rm -rf /home/${MY_USER}/.gem \ -&& rm -rf /home/${MY_USER}/.npm \ && rm -rf /home/${MY_USER}/.subversion \ && rm -rf /home/${MY_USER}/.v8* \ \ @@ -347,15 +326,101 @@ RUN set -x \ && rm -rf /root/.composer \ && rm -rf /root/.config \ && rm -rf /root/.drush \ -&& rm -rf /root/.gem \ -&& rm -rf /root/.npm \ && rm -rf /root/.subversion \ && rm -rf /root/.v8* \ \ && rm -rf /tmp/* \ +&& (rm -rf /tmp/.* || true) \ \ + \ + && (rm -rf /root/.gem || true ) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.npm || true) \ + \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.npm || true) \ \ && (rm -rf /usr/local/src/composer/cache/* || true) \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) + + +### +### Install Node npm packages (globally) +### +RUN set -x \ +# eslint + && su -c '. /opt/nvm/nvm.sh; npm install -g eslint' devilbox \ +# grunt + && su -c '. /opt/nvm/nvm.sh; npm install -g grunt' devilbox \ +# grunt_cli + && su -c '. /opt/nvm/nvm.sh; npm install -g grunt-cli' devilbox \ +# gulp + && su -c '. /opt/nvm/nvm.sh; npm install -g gulp' devilbox \ +# jsonlint + && su -c '. /opt/nvm/nvm.sh; npm install -g jsonlint' devilbox \ +# pm2 + && su -c '. /opt/nvm/nvm.sh; npm install -g pm2' devilbox \ +# mdlint + && su -c '. /opt/nvm/nvm.sh; npm install -g mdlint' devilbox \ +# webpack + && su -c '. /opt/nvm/nvm.sh; npm install -g webpack' devilbox \ +# webpack_cli + && su -c '. /opt/nvm/nvm.sh; npm install -g webpack-cli' devilbox \ + \ + && ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ + \ + && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ + && rm -rf /home/devilbox/.npm \ + && rm -rf /home/devilbox/.config \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) \ + \ + && (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) + + + +### +### Install Python pip packages +### +RUN set -x \ +# ansible + && pip install --no-cache-dir --force-reinstall ansible \ +# yamllint + && pip install --no-cache-dir --force-reinstall yamllint \ + \ + && rm -rf /root/.cache/pip \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) \ + \ + && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ + && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ + && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) + + +### +### Install Ruby gems +### +RUN set -x \ +# mixlib_config + && gem install mixlib-config -v 2.2.4 \ +# rb_inotify + && gem install rb-inotify -v 0.9.10 \ +# mdl + && gem install mdl \ +# scss_lint + && gem install scss_lint \ +# sass + && gem install sass \ + \ + && rm -rf /root/.gem \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -367,7 +432,7 @@ RUN set -x \ ### RUN \ { \ - echo "PATH=\${PATH}:/usr/local/bin:/usr/local/sbin:/usr/local/node/bin"; \ + echo "PATH=\${PATH}:/usr/local/bin:/usr/local/sbin:\${HOME}/.yarn/bin"; \ echo "export PATH"; \ echo ". /etc/bash-devilbox"; \ echo "if [ -d /etc/bashrc-devilbox.d/ ]; then"; \ @@ -403,7 +468,7 @@ RUN set -x \ RUN set -x \ && composer --version 2>/dev/null | grep -E 'version\s*[.0-9]+' \ - && ansible --version | grep -E '^ansible [.0-9]+$' \ + && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[.0-9]+' \ && asgardcms --version 2>/dev/null | grep -Ei 'AsgardCMS\sInstaller\s[.0-9]+' \ && mdl --version | grep -E '[.0-9]+' \ && scss-lint --version | grep -E '[.0-9]+' \ @@ -419,7 +484,6 @@ RUN set -x \ && drush9 --version | grep -E '9[.0-9]+\s*$' \ && drupal --version | grep -E 'Drupal Console Launcher\s*[.0-9]' \ && git-flow version | grep -E '[.0-9]+' \ - && grunt --version | grep -E '[.0-9]+' \ && laravel --version | grep -E '(Installer|version)\s*[.0-9]+' \ && linkcheck --version | grep -E '^linkcheck\sv[.0-9]+' \ && su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew --version' | grep -E 'Homebrew\s*[.0-9]+' \ @@ -430,14 +494,32 @@ RUN set -x \ && php-cs-fixer --version 2>&1 | grep -E 'Fixer\s+(version\s*)?[-_.0-9]+\s+' \ && phpunit --version | grep -iE '^PHPUnit\s[.0-9]+' \ && photon --version | grep -E 'Installer [.0-9]+' \ - && pm2 --no-daemon --version | grep -E '[.0-9]+' \ - && sass --version | grep -E '[.0-9]+' \ && symfony --version | grep -E 'version\s*[.0-9]+' \ - && webpack --version | grep -E '[.0-9]+' \ && wkhtmltopdf --version | grep -E "^wkhtmltopdf [.0-9]+\s+\(.+patched.+\)" \ && wp --allow-root --version | grep -E '[.0-9]+' \ + \ + && ansible --version | grep -E '^ansible [.0-9]+$' \ && yamllint --version 2>&1 | grep -E '[.0-9]+' \ - && true + \ + && eslint -v | grep -E '[.0-9]+' \ + && grunt --version | grep -E '[.0-9]+' \ + && gulp --version | grep -E '[.0-9]+' \ + && jsonlint --version | grep -E '[.0-9]+' \ + && pm2 --no-daemon --version | grep -E '[.0-9]+' \ + && mdlint --version | grep -E '[.0-9]+' \ + && webpack --version | grep -E '[.0-9]+' \ + \ + && mdl --version | grep -E '[.0-9]+' \ + && sass --version | grep -E '[.0-9]+' \ + \ + && rm -rf /home/devilbox/.config/ \ + && rm -rf /root/.ansible \ + && rm -rf /root/.console \ + && rm -rf /root/.composer \ + && rm -rf /root/.drush \ + && rm -rf /root/.pm2 \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) ### diff --git a/Dockerfiles/work/Dockerfile-7.3 b/Dockerfiles/work/Dockerfile-7.3 index 025adcd..bccb6db 100644 --- a/Dockerfiles/work/Dockerfile-7.3 +++ b/Dockerfiles/work/Dockerfile-7.3 @@ -37,8 +37,6 @@ RUN set -x \ && echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu artful main" > /etc/apt/sources.list.d/git.list \ && APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5 \ && echo "deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.6 main" > /etc/apt/sources.list.d/mongo.list \ - && curl -sS "https://deb.nodesource.com/gpgkey/nodesource.gpg.key" 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ - && echo "deb http://deb.nodesource.com/node_8.x stretch main" > /etc/apt/sources.list.d/node.list \ && curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ && echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main" > /etc/apt/sources.list.d/pgsql.list \ && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ @@ -82,15 +80,10 @@ RUN set -x \ nano \ net-tools \ netcat \ - nodejs \ openssh-client \ patch \ patchelf \ postgresql-client \ - python-cffi \ - python-dev \ - python-pip \ - python-wheel \ redis-tools \ rsync \ rubygems \ @@ -113,22 +106,42 @@ RUN set -x \ && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \ && rm -rf /var/lib/apt/lists/* \ \ -# Get newer pip version - && pip install --upgrade pip \ - && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false python-pip \ - && rm -rf /var/lib/apt/lists/* \ - \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) +### +### Install custom software +### RUN set -x \ # composer && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \ -# ansible - && /usr/local/bin/pip install --no-cache-dir --upgrade setuptools \ -&& /usr/local/bin/pip install --no-cache-dir ansible \ +# pip + && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ +&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ + libpython-dev \ +&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ +&& rm -rf /var/lib/apt/lists/* \ +\ +&& curl -sS https://bootstrap.pypa.io/get-pip.py | python \ + \ +# nvm + && git clone https://github.com/creationix/nvm /opt/nvm \ +&& cd /opt/nvm \ +&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ +\ +&& { \ + echo 'export NVM_DIR="/opt/nvm"'; \ + echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm'; \ + echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ +} >> /home/devilbox/.bashrc \ +\ +&& chown -R devilbox:devilbox /opt/nvm \ + \ + && su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ \ # asgardcms && COMPOSER_HOME="/usr/local/src/composer" composer global require asgardcms/asgardcms-installer \ @@ -142,16 +155,6 @@ RUN set -x \ && make install \ && cd / \ && rm -rf /usr/local/src/awesome-ci \ - \ - && gem install mixlib-config -v 2.2.4 \ -&& gem install rb-inotify -v 0.9.10 \ -&& gem install mdl \ -&& gem install scss_lint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y eslint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y jsonlint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y mdlint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y gulp \ -&& rm -rf /tmp/y \ \ # codeception && COMPOSER_HOME="/usr/local/src/composer" composer global require codeception/codeception \ @@ -208,11 +211,6 @@ RUN set -x \ && make install \ && cd / && rm -rf /tmp/gitflow \ \ -# grunt - && until yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y grunt; do sleep 1; done \ -&& until yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y grunt-cli; do sleep 1; done \ -&& rm -rf /tmp/y \ - \ # laravel && git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \ && cd /usr/local/src/laravel-installer \ @@ -239,7 +237,7 @@ RUN set -x \ && su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew config' \ \ # mhsendmail - && wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ + && wget --hsts-file=/dev/null https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ && chmod +x mhsendmail_linux_amd64 \ && mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ \ @@ -285,18 +283,9 @@ RUN set -x \ && COMPOSER_HOME="/usr/local/src/composer" composer global require "photoncms/installer" \ && ln -s /usr/local/src/composer/vendor/photoncms/installer/photon /usr/local/bin/photon \ \ -# pm2 - && until npm install pm2 -g; do sleep 1; done \ -# sass - && gem install sass \ # symfony && curl https://symfony.com/installer -L -o /usr/local/bin/symfony \ && chmod +x /usr/local/bin/symfony \ -# webpack - && yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y webpack \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y webpack-cli \ -&& rm -rf /tmp/y \ - \ # wkhtmltopdf && VERSION="$( curl -sSL https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+stretch_amd64\.deb' | head -1 )" \ && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ @@ -312,22 +301,12 @@ RUN set -x \ # wpcli && curl https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \ && chmod +x /usr/local/bin/wp \ -# yamllint - && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ -&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests libpython-dev python-setuptools libyaml-dev \ - \ - && /usr/local/bin/pip install --no-cache-dir yamllint \ - && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false libpython-dev python-setuptools libyaml-dev \ -&& rm -rf /var/lib/apt/lists/* \ - \ # cleanup && rm -rf /home/${MY_USER}/.*json \ && rm -rf /home/${MY_USER}/.cache \ && rm -rf /home/${MY_USER}/.composer \ && rm -rf /home/${MY_USER}/.config \ && rm -rf /home/${MY_USER}/.drush \ -&& rm -rf /home/${MY_USER}/.gem \ -&& rm -rf /home/${MY_USER}/.npm \ && rm -rf /home/${MY_USER}/.subversion \ && rm -rf /home/${MY_USER}/.v8* \ \ @@ -336,15 +315,101 @@ RUN set -x \ && rm -rf /root/.composer \ && rm -rf /root/.config \ && rm -rf /root/.drush \ -&& rm -rf /root/.gem \ -&& rm -rf /root/.npm \ && rm -rf /root/.subversion \ && rm -rf /root/.v8* \ \ && rm -rf /tmp/* \ +&& (rm -rf /tmp/.* || true) \ \ + \ + && (rm -rf /root/.gem || true ) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.npm || true) \ + \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.npm || true) \ \ && (rm -rf /usr/local/src/composer/cache/* || true) \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) + + +### +### Install Node npm packages (globally) +### +RUN set -x \ +# eslint + && su -c '. /opt/nvm/nvm.sh; npm install -g eslint' devilbox \ +# grunt + && su -c '. /opt/nvm/nvm.sh; npm install -g grunt' devilbox \ +# grunt_cli + && su -c '. /opt/nvm/nvm.sh; npm install -g grunt-cli' devilbox \ +# gulp + && su -c '. /opt/nvm/nvm.sh; npm install -g gulp' devilbox \ +# jsonlint + && su -c '. /opt/nvm/nvm.sh; npm install -g jsonlint' devilbox \ +# pm2 + && su -c '. /opt/nvm/nvm.sh; npm install -g pm2' devilbox \ +# mdlint + && su -c '. /opt/nvm/nvm.sh; npm install -g mdlint' devilbox \ +# webpack + && su -c '. /opt/nvm/nvm.sh; npm install -g webpack' devilbox \ +# webpack_cli + && su -c '. /opt/nvm/nvm.sh; npm install -g webpack-cli' devilbox \ + \ + && ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ + \ + && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ + && rm -rf /home/devilbox/.npm \ + && rm -rf /home/devilbox/.config \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) \ + \ + && (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) + + + +### +### Install Python pip packages +### +RUN set -x \ +# ansible + && pip install --no-cache-dir --force-reinstall ansible \ +# yamllint + && pip install --no-cache-dir --force-reinstall yamllint \ + \ + && rm -rf /root/.cache/pip \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) \ + \ + && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ + && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ + && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) + + +### +### Install Ruby gems +### +RUN set -x \ +# mixlib_config + && gem install mixlib-config -v 2.2.4 \ +# rb_inotify + && gem install rb-inotify -v 0.9.10 \ +# mdl + && gem install mdl \ +# scss_lint + && gem install scss_lint \ +# sass + && gem install sass \ + \ + && rm -rf /root/.gem \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -356,7 +421,7 @@ RUN set -x \ ### RUN \ { \ - echo "PATH=\${PATH}:/usr/local/bin:/usr/local/sbin:/usr/local/node/bin"; \ + echo "PATH=\${PATH}:/usr/local/bin:/usr/local/sbin:\${HOME}/.yarn/bin"; \ echo "export PATH"; \ echo ". /etc/bash-devilbox"; \ echo "if [ -d /etc/bashrc-devilbox.d/ ]; then"; \ @@ -392,7 +457,7 @@ RUN set -x \ RUN set -x \ && composer --version 2>/dev/null | grep -E 'version\s*[.0-9]+' \ - && ansible --version | grep -E '^ansible [.0-9]+$' \ + && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[.0-9]+' \ && asgardcms --version 2>/dev/null | grep -Ei 'AsgardCMS\sInstaller\s[.0-9]+' \ && mdl --version | grep -E '[.0-9]+' \ && scss-lint --version | grep -E '[.0-9]+' \ @@ -408,7 +473,6 @@ RUN set -x \ && drush9 --version | grep -E '9[.0-9]+\s*$' \ && drupal --version | grep -E 'Drupal Console Launcher\s*[.0-9]' \ && git-flow version | grep -E '[.0-9]+' \ - && grunt --version | grep -E '[.0-9]+' \ && laravel --version | grep -E '(Installer|version)\s*[.0-9]+' \ && linkcheck --version | grep -E '^linkcheck\sv[.0-9]+' \ && su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew --version' | grep -E 'Homebrew\s*[.0-9]+' \ @@ -418,14 +482,32 @@ RUN set -x \ && php-cs-fixer --version 2>&1 | grep -E 'Fixer\s+(version\s*)?[-_.0-9]+\s+' \ && phpunit --version | grep -iE '^PHPUnit\s[.0-9]+' \ && photon --version | grep -E 'Installer [.0-9]+' \ - && pm2 --no-daemon --version | grep -E '[.0-9]+' \ - && sass --version | grep -E '[.0-9]+' \ && symfony --version | grep -E 'version\s*[.0-9]+' \ - && webpack --version | grep -E '[.0-9]+' \ && wkhtmltopdf --version | grep -E "^wkhtmltopdf [.0-9]+\s+\(.+patched.+\)" \ && wp --allow-root --version | grep -E '[.0-9]+' \ + \ + && ansible --version | grep -E '^ansible [.0-9]+$' \ && yamllint --version 2>&1 | grep -E '[.0-9]+' \ - && true + \ + && eslint -v | grep -E '[.0-9]+' \ + && grunt --version | grep -E '[.0-9]+' \ + && gulp --version | grep -E '[.0-9]+' \ + && jsonlint --version | grep -E '[.0-9]+' \ + && pm2 --no-daemon --version | grep -E '[.0-9]+' \ + && mdlint --version | grep -E '[.0-9]+' \ + && webpack --version | grep -E '[.0-9]+' \ + \ + && mdl --version | grep -E '[.0-9]+' \ + && sass --version | grep -E '[.0-9]+' \ + \ + && rm -rf /home/devilbox/.config/ \ + && rm -rf /root/.ansible \ + && rm -rf /root/.console \ + && rm -rf /root/.composer \ + && rm -rf /root/.drush \ + && rm -rf /root/.pm2 \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) ### diff --git a/Dockerfiles/work/Dockerfile-7.4 b/Dockerfiles/work/Dockerfile-7.4 index 9a35ca6..24401e4 100644 --- a/Dockerfiles/work/Dockerfile-7.4 +++ b/Dockerfiles/work/Dockerfile-7.4 @@ -37,8 +37,6 @@ RUN set -x \ && echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu artful main" > /etc/apt/sources.list.d/git.list \ && APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5 \ && echo "deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.6 main" > /etc/apt/sources.list.d/mongo.list \ - && curl -sS "https://deb.nodesource.com/gpgkey/nodesource.gpg.key" 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ - && echo "deb http://deb.nodesource.com/node_8.x stretch main" > /etc/apt/sources.list.d/node.list \ && curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ && echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main" > /etc/apt/sources.list.d/pgsql.list \ && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ @@ -82,15 +80,10 @@ RUN set -x \ nano \ net-tools \ netcat \ - nodejs \ openssh-client \ patch \ patchelf \ postgresql-client \ - python-cffi \ - python-dev \ - python-pip \ - python-wheel \ redis-tools \ rsync \ rubygems \ @@ -113,22 +106,42 @@ RUN set -x \ && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \ && rm -rf /var/lib/apt/lists/* \ \ -# Get newer pip version - && pip install --upgrade pip \ - && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false python-pip \ - && rm -rf /var/lib/apt/lists/* \ - \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) +### +### Install custom software +### RUN set -x \ # composer && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \ -# ansible - && /usr/local/bin/pip install --no-cache-dir --upgrade setuptools \ -&& /usr/local/bin/pip install --no-cache-dir ansible \ +# pip + && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ +&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ + libpython-dev \ +&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ +&& rm -rf /var/lib/apt/lists/* \ +\ +&& curl -sS https://bootstrap.pypa.io/get-pip.py | python \ + \ +# nvm + && git clone https://github.com/creationix/nvm /opt/nvm \ +&& cd /opt/nvm \ +&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ +\ +&& { \ + echo 'export NVM_DIR="/opt/nvm"'; \ + echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm'; \ + echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ +} >> /home/devilbox/.bashrc \ +\ +&& chown -R devilbox:devilbox /opt/nvm \ + \ + && su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ \ # asgardcms && COMPOSER_HOME="/usr/local/src/composer" composer global require asgardcms/asgardcms-installer \ @@ -142,16 +155,6 @@ RUN set -x \ && make install \ && cd / \ && rm -rf /usr/local/src/awesome-ci \ - \ - && gem install mixlib-config -v 2.2.4 \ -&& gem install rb-inotify -v 0.9.10 \ -&& gem install mdl \ -&& gem install scss_lint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y eslint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y jsonlint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y mdlint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y gulp \ -&& rm -rf /tmp/y \ \ # codeception && COMPOSER_HOME="/usr/local/src/composer" composer global require codeception/codeception \ @@ -208,11 +211,6 @@ RUN set -x \ && make install \ && cd / && rm -rf /tmp/gitflow \ \ -# grunt - && until yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y grunt; do sleep 1; done \ -&& until yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y grunt-cli; do sleep 1; done \ -&& rm -rf /tmp/y \ - \ # laravel && git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \ && cd /usr/local/src/laravel-installer \ @@ -239,7 +237,7 @@ RUN set -x \ && su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew config' \ \ # mhsendmail - && wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ + && wget --hsts-file=/dev/null https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ && chmod +x mhsendmail_linux_amd64 \ && mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ \ @@ -281,18 +279,9 @@ RUN set -x \ && COMPOSER_HOME="/usr/local/src/composer" composer global require "photoncms/installer" \ && ln -s /usr/local/src/composer/vendor/photoncms/installer/photon /usr/local/bin/photon \ \ -# pm2 - && until npm install pm2 -g; do sleep 1; done \ -# sass - && gem install sass \ # symfony && curl https://symfony.com/installer -L -o /usr/local/bin/symfony \ && chmod +x /usr/local/bin/symfony \ -# webpack - && yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y webpack \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y webpack-cli \ -&& rm -rf /tmp/y \ - \ # wkhtmltopdf && VERSION="$( curl -sSL https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+stretch_amd64\.deb' | head -1 )" \ && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ @@ -308,22 +297,12 @@ RUN set -x \ # wpcli && curl https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \ && chmod +x /usr/local/bin/wp \ -# yamllint - && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ -&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests libpython-dev python-setuptools libyaml-dev \ - \ - && /usr/local/bin/pip install --no-cache-dir yamllint \ - && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false libpython-dev python-setuptools libyaml-dev \ -&& rm -rf /var/lib/apt/lists/* \ - \ # cleanup && rm -rf /home/${MY_USER}/.*json \ && rm -rf /home/${MY_USER}/.cache \ && rm -rf /home/${MY_USER}/.composer \ && rm -rf /home/${MY_USER}/.config \ && rm -rf /home/${MY_USER}/.drush \ -&& rm -rf /home/${MY_USER}/.gem \ -&& rm -rf /home/${MY_USER}/.npm \ && rm -rf /home/${MY_USER}/.subversion \ && rm -rf /home/${MY_USER}/.v8* \ \ @@ -332,15 +311,101 @@ RUN set -x \ && rm -rf /root/.composer \ && rm -rf /root/.config \ && rm -rf /root/.drush \ -&& rm -rf /root/.gem \ -&& rm -rf /root/.npm \ && rm -rf /root/.subversion \ && rm -rf /root/.v8* \ \ && rm -rf /tmp/* \ +&& (rm -rf /tmp/.* || true) \ \ + \ + && (rm -rf /root/.gem || true ) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.npm || true) \ + \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.npm || true) \ \ && (rm -rf /usr/local/src/composer/cache/* || true) \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) + + +### +### Install Node npm packages (globally) +### +RUN set -x \ +# eslint + && su -c '. /opt/nvm/nvm.sh; npm install -g eslint' devilbox \ +# grunt + && su -c '. /opt/nvm/nvm.sh; npm install -g grunt' devilbox \ +# grunt_cli + && su -c '. /opt/nvm/nvm.sh; npm install -g grunt-cli' devilbox \ +# gulp + && su -c '. /opt/nvm/nvm.sh; npm install -g gulp' devilbox \ +# jsonlint + && su -c '. /opt/nvm/nvm.sh; npm install -g jsonlint' devilbox \ +# pm2 + && su -c '. /opt/nvm/nvm.sh; npm install -g pm2' devilbox \ +# mdlint + && su -c '. /opt/nvm/nvm.sh; npm install -g mdlint' devilbox \ +# webpack + && su -c '. /opt/nvm/nvm.sh; npm install -g webpack' devilbox \ +# webpack_cli + && su -c '. /opt/nvm/nvm.sh; npm install -g webpack-cli' devilbox \ + \ + && ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ + \ + && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ + && rm -rf /home/devilbox/.npm \ + && rm -rf /home/devilbox/.config \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) \ + \ + && (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) + + + +### +### Install Python pip packages +### +RUN set -x \ +# ansible + && pip install --no-cache-dir --force-reinstall ansible \ +# yamllint + && pip install --no-cache-dir --force-reinstall yamllint \ + \ + && rm -rf /root/.cache/pip \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) \ + \ + && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ + && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ + && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) + + +### +### Install Ruby gems +### +RUN set -x \ +# mixlib_config + && gem install mixlib-config -v 2.2.4 \ +# rb_inotify + && gem install rb-inotify -v 0.9.10 \ +# mdl + && gem install mdl \ +# scss_lint + && gem install scss_lint \ +# sass + && gem install sass \ + \ + && rm -rf /root/.gem \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -352,7 +417,7 @@ RUN set -x \ ### RUN \ { \ - echo "PATH=\${PATH}:/usr/local/bin:/usr/local/sbin:/usr/local/node/bin"; \ + echo "PATH=\${PATH}:/usr/local/bin:/usr/local/sbin:\${HOME}/.yarn/bin"; \ echo "export PATH"; \ echo ". /etc/bash-devilbox"; \ echo "if [ -d /etc/bashrc-devilbox.d/ ]; then"; \ @@ -388,7 +453,7 @@ RUN set -x \ RUN set -x \ && composer --version 2>/dev/null | grep -E 'version\s*[.0-9]+' \ - && ansible --version | grep -E '^ansible [.0-9]+$' \ + && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[.0-9]+' \ && asgardcms --version 2>/dev/null | grep -Ei 'AsgardCMS\sInstaller\s[.0-9]+' \ && mdl --version | grep -E '[.0-9]+' \ && scss-lint --version | grep -E '[.0-9]+' \ @@ -404,7 +469,6 @@ RUN set -x \ && drush9 --version | grep -E '9[.0-9]+\s*$' \ && drupal --version | grep -E 'Drupal Console Launcher\s*[.0-9]' \ && git-flow version | grep -E '[.0-9]+' \ - && grunt --version | grep -E '[.0-9]+' \ && laravel --version | grep -E '(Installer|version)\s*[.0-9]+' \ && linkcheck --version | grep -E '^linkcheck\sv[.0-9]+' \ && su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew --version' | grep -E 'Homebrew\s*[.0-9]+' \ @@ -413,14 +477,32 @@ RUN set -x \ && phpcbf --version | grep -E 'version [.0-9]+' \ && phpunit --version | grep -iE '^PHPUnit\s[.0-9]+' \ && photon --version | grep -E 'Installer [.0-9]+' \ - && pm2 --no-daemon --version | grep -E '[.0-9]+' \ - && sass --version | grep -E '[.0-9]+' \ && symfony --version | grep -E 'version\s*[.0-9]+' \ - && webpack --version | grep -E '[.0-9]+' \ && wkhtmltopdf --version | grep -E "^wkhtmltopdf [.0-9]+\s+\(.+patched.+\)" \ && wp --allow-root --version | grep -E '[.0-9]+' \ + \ + && ansible --version | grep -E '^ansible [.0-9]+$' \ && yamllint --version 2>&1 | grep -E '[.0-9]+' \ - && true + \ + && eslint -v | grep -E '[.0-9]+' \ + && grunt --version | grep -E '[.0-9]+' \ + && gulp --version | grep -E '[.0-9]+' \ + && jsonlint --version | grep -E '[.0-9]+' \ + && pm2 --no-daemon --version | grep -E '[.0-9]+' \ + && mdlint --version | grep -E '[.0-9]+' \ + && webpack --version | grep -E '[.0-9]+' \ + \ + && mdl --version | grep -E '[.0-9]+' \ + && sass --version | grep -E '[.0-9]+' \ + \ + && rm -rf /home/devilbox/.config/ \ + && rm -rf /root/.ansible \ + && rm -rf /root/.console \ + && rm -rf /root/.composer \ + && rm -rf /root/.drush \ + && rm -rf /root/.pm2 \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) ### diff --git a/Dockerfiles/work/Dockerfile-8.0 b/Dockerfiles/work/Dockerfile-8.0 index 6e0ed66..204d320 100644 --- a/Dockerfiles/work/Dockerfile-8.0 +++ b/Dockerfiles/work/Dockerfile-8.0 @@ -37,8 +37,6 @@ RUN set -x \ && echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu artful main" > /etc/apt/sources.list.d/git.list \ && APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5 \ && echo "deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.6 main" > /etc/apt/sources.list.d/mongo.list \ - && curl -sS "https://deb.nodesource.com/gpgkey/nodesource.gpg.key" 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ - && echo "deb http://deb.nodesource.com/node_8.x stretch main" > /etc/apt/sources.list.d/node.list \ && curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ && echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main" > /etc/apt/sources.list.d/pgsql.list \ && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ @@ -82,15 +80,10 @@ RUN set -x \ nano \ net-tools \ netcat \ - nodejs \ openssh-client \ patch \ patchelf \ postgresql-client \ - python-cffi \ - python-dev \ - python-pip \ - python-wheel \ redis-tools \ rsync \ rubygems \ @@ -113,22 +106,42 @@ RUN set -x \ && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \ && rm -rf /var/lib/apt/lists/* \ \ -# Get newer pip version - && pip install --upgrade pip \ - && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false python-pip \ - && rm -rf /var/lib/apt/lists/* \ - \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) +### +### Install custom software +### RUN set -x \ # composer && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \ -# ansible - && /usr/local/bin/pip install --no-cache-dir --upgrade setuptools \ -&& /usr/local/bin/pip install --no-cache-dir ansible \ +# pip + && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ +&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ + libpython-dev \ +&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ +&& rm -rf /var/lib/apt/lists/* \ +\ +&& curl -sS https://bootstrap.pypa.io/get-pip.py | python \ + \ +# nvm + && git clone https://github.com/creationix/nvm /opt/nvm \ +&& cd /opt/nvm \ +&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ +\ +&& { \ + echo 'export NVM_DIR="/opt/nvm"'; \ + echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm'; \ + echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ +} >> /home/devilbox/.bashrc \ +\ +&& chown -R devilbox:devilbox /opt/nvm \ + \ + && su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ \ # awesomeci && git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \ @@ -138,16 +151,6 @@ RUN set -x \ && make install \ && cd / \ && rm -rf /usr/local/src/awesome-ci \ - \ - && gem install mixlib-config -v 2.2.4 \ -&& gem install rb-inotify -v 0.9.10 \ -&& gem install mdl \ -&& gem install scss_lint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y eslint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y jsonlint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y mdlint \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y gulp \ -&& rm -rf /tmp/y \ \ # deployer && curl -sS https://deployer.org/deployer.phar -L -o /usr/local/bin/dep \ @@ -161,11 +164,6 @@ RUN set -x \ && make install \ && cd / && rm -rf /tmp/gitflow \ \ -# grunt - && until yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y grunt; do sleep 1; done \ -&& until yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y grunt-cli; do sleep 1; done \ -&& rm -rf /tmp/y \ - \ # linkcheck && curl https://raw.githubusercontent.com/cytopia/linkcheck/master/linkcheck > /usr/local/bin/linkcheck \ && chmod +x /usr/local/bin/linkcheck \ @@ -182,7 +180,7 @@ RUN set -x \ && su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew config' \ \ # mhsendmail - && wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ + && wget --hsts-file=/dev/null https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ && chmod +x mhsendmail_linux_amd64 \ && mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ \ @@ -216,18 +214,9 @@ RUN set -x \ && curl -sS -L https://squizlabs.github.io/PHP_CodeSniffer/phpcbf.phar > /usr/local/bin/phpcbf 2>/dev/null \ && chmod +x /usr/local/bin/phpcbf \ \ -# pm2 - && until npm install pm2 -g; do sleep 1; done \ -# sass - && gem install sass \ # symfony && curl https://symfony.com/installer -L -o /usr/local/bin/symfony \ && chmod +x /usr/local/bin/symfony \ -# webpack - && yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y webpack \ -&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y webpack-cli \ -&& rm -rf /tmp/y \ - \ # wkhtmltopdf && VERSION="$( curl -sSL https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+stretch_amd64\.deb' | head -1 )" \ && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ @@ -243,22 +232,12 @@ RUN set -x \ # wpcli && curl https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \ && chmod +x /usr/local/bin/wp \ -# yamllint - && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ -&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests libpython-dev python-setuptools libyaml-dev \ - \ - && /usr/local/bin/pip install --no-cache-dir yamllint \ - && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false libpython-dev python-setuptools libyaml-dev \ -&& rm -rf /var/lib/apt/lists/* \ - \ # cleanup && rm -rf /home/${MY_USER}/.*json \ && rm -rf /home/${MY_USER}/.cache \ && rm -rf /home/${MY_USER}/.composer \ && rm -rf /home/${MY_USER}/.config \ && rm -rf /home/${MY_USER}/.drush \ -&& rm -rf /home/${MY_USER}/.gem \ -&& rm -rf /home/${MY_USER}/.npm \ && rm -rf /home/${MY_USER}/.subversion \ && rm -rf /home/${MY_USER}/.v8* \ \ @@ -267,15 +246,101 @@ RUN set -x \ && rm -rf /root/.composer \ && rm -rf /root/.config \ && rm -rf /root/.drush \ -&& rm -rf /root/.gem \ -&& rm -rf /root/.npm \ && rm -rf /root/.subversion \ && rm -rf /root/.v8* \ \ && rm -rf /tmp/* \ +&& (rm -rf /tmp/.* || true) \ \ + \ + && (rm -rf /root/.gem || true ) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.npm || true) \ + \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.npm || true) \ \ && (rm -rf /usr/local/src/composer/cache/* || true) \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) + + +### +### Install Node npm packages (globally) +### +RUN set -x \ +# eslint + && su -c '. /opt/nvm/nvm.sh; npm install -g eslint' devilbox \ +# grunt + && su -c '. /opt/nvm/nvm.sh; npm install -g grunt' devilbox \ +# grunt_cli + && su -c '. /opt/nvm/nvm.sh; npm install -g grunt-cli' devilbox \ +# gulp + && su -c '. /opt/nvm/nvm.sh; npm install -g gulp' devilbox \ +# jsonlint + && su -c '. /opt/nvm/nvm.sh; npm install -g jsonlint' devilbox \ +# pm2 + && su -c '. /opt/nvm/nvm.sh; npm install -g pm2' devilbox \ +# mdlint + && su -c '. /opt/nvm/nvm.sh; npm install -g mdlint' devilbox \ +# webpack + && su -c '. /opt/nvm/nvm.sh; npm install -g webpack' devilbox \ +# webpack_cli + && su -c '. /opt/nvm/nvm.sh; npm install -g webpack-cli' devilbox \ + \ + && ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ + \ + && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ + && rm -rf /home/devilbox/.npm \ + && rm -rf /home/devilbox/.config \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) \ + \ + && (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) + + + +### +### Install Python pip packages +### +RUN set -x \ +# ansible + && pip install --no-cache-dir --force-reinstall ansible \ +# yamllint + && pip install --no-cache-dir --force-reinstall yamllint \ + \ + && rm -rf /root/.cache/pip \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) \ + \ + && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ + && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ + && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) + + +### +### Install Ruby gems +### +RUN set -x \ +# mixlib_config + && gem install mixlib-config -v 2.2.4 \ +# rb_inotify + && gem install rb-inotify -v 0.9.10 \ +# mdl + && gem install mdl \ +# scss_lint + && gem install scss_lint \ +# sass + && gem install sass \ + \ + && rm -rf /root/.gem \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -287,7 +352,7 @@ RUN set -x \ ### RUN \ { \ - echo "PATH=\${PATH}:/usr/local/bin:/usr/local/sbin:/usr/local/node/bin"; \ + echo "PATH=\${PATH}:/usr/local/bin:/usr/local/sbin:\${HOME}/.yarn/bin"; \ echo "export PATH"; \ echo ". /etc/bash-devilbox"; \ echo "if [ -d /etc/bashrc-devilbox.d/ ]; then"; \ @@ -323,7 +388,7 @@ RUN set -x \ RUN set -x \ && composer --version 2>/dev/null | grep -E 'version\s*[.0-9]+' \ - && ansible --version | grep -E '^ansible [.0-9]+$' \ + && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[.0-9]+' \ && mdl --version | grep -E '[.0-9]+' \ && scss-lint --version | grep -E '[.0-9]+' \ && eslint -v | grep -E '[.0-9]+' \ @@ -334,20 +399,37 @@ RUN set -x \ && dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[.0-9]+' \ && drupal --version | grep -E 'Drupal Console Launcher\s*[.0-9]' \ && git-flow version | grep -E '[.0-9]+' \ - && grunt --version | grep -E '[.0-9]+' \ && linkcheck --version | grep -E '^linkcheck\sv[.0-9]+' \ && su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew --version' | grep -E 'Homebrew\s*[.0-9]+' \ && mysqldump-secure --version | grep -E 'Version:\s*[.0-9]+' \ && phpcs --version | grep -E 'version [.0-9]+' \ && phpcbf --version | grep -E 'version [.0-9]+' \ - && pm2 --no-daemon --version | grep -E '[.0-9]+' \ - && sass --version | grep -E '[.0-9]+' \ && symfony --version | grep -E 'version\s*[.0-9]+' \ - && webpack --version | grep -E '[.0-9]+' \ && wkhtmltopdf --version | grep -E "^wkhtmltopdf [.0-9]+\s+\(.+patched.+\)" \ && wp --allow-root --version | grep -E '[.0-9]+' \ + \ + && ansible --version | grep -E '^ansible [.0-9]+$' \ && yamllint --version 2>&1 | grep -E '[.0-9]+' \ - && true + \ + && eslint -v | grep -E '[.0-9]+' \ + && grunt --version | grep -E '[.0-9]+' \ + && gulp --version | grep -E '[.0-9]+' \ + && jsonlint --version | grep -E '[.0-9]+' \ + && pm2 --no-daemon --version | grep -E '[.0-9]+' \ + && mdlint --version | grep -E '[.0-9]+' \ + && webpack --version | grep -E '[.0-9]+' \ + \ + && mdl --version | grep -E '[.0-9]+' \ + && sass --version | grep -E '[.0-9]+' \ + \ + && rm -rf /home/devilbox/.config/ \ + && rm -rf /root/.ansible \ + && rm -rf /root/.console \ + && rm -rf /root/.composer \ + && rm -rf /root/.drush \ + && rm -rf /root/.pm2 \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) ### diff --git a/build/ansible/DOCKERFILES/Dockerfile-work.j2 b/build/ansible/DOCKERFILES/Dockerfile-work.j2 index 18b1951..e334c06 100644 --- a/build/ansible/DOCKERFILES/Dockerfile-work.j2 +++ b/build/ansible/DOCKERFILES/Dockerfile-work.j2 @@ -101,15 +101,10 @@ RUN set -x \ nano \ net-tools \ netcat \ - nodejs \ openssh-client \ patch \ patchelf \ postgresql-client \ - python-cffi \ - python-dev \ - python-pip \ - python-wheel \ redis-tools \ rsync \ rubygems \ @@ -132,16 +127,14 @@ RUN set -x \ && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \ && rm -rf /var/lib/apt/lists/* \ \ -# Get newer pip version - && pip install --upgrade pip \ - && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false python-pip \ - && rm -rf /var/lib/apt/lists/* \ - \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) +### +### Install custom software +### RUN set -x \ {% for tool in software_enabled %} {# Not disabled #} @@ -170,8 +163,111 @@ RUN set -x \ {% endif %} {% endif %} {% endfor %} + \ + && (rm -rf /root/.gem || true ) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.npm || true) \ + \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.npm || true) \ \ && (rm -rf /usr/local/src/composer/cache/* || true) \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) + + +### +### Install Node npm packages (globally) +### +RUN set -x \ +{% for tool in npm_enabled %} +{# Not disabled #} +{% if ('disabled' not in npm_available[tool]) or (php_version not in npm_available[tool]['disabled']) %} +# {{ tool }} +{# Version specific gem version available? #} +{% if php_version in npm_available[tool] and 'version' in npm_available[tool][php_version] %} + && su -c '. /opt/nvm/nvm.sh; npm install -g {{ npm_available[tool]['name'] }} {{ npm_available[tool][php_version]['version'] }}' devilbox \ +{# Generic gem version available? #} +{% elif 'all' in npm_available[tool] and 'version' in npm_available[tool]['all'] %} + && su -c '. /opt/nvm/nvm.sh; npm install -g {{ npm_available[tool]['name'] }} {{ npm_available[tool]['all']['version'] }}' devilbox \ +{# No version info available #} +{% else %} + && su -c '. /opt/nvm/nvm.sh; npm install -g {{ npm_available[tool]['name'] }}' devilbox \ +{% endif %} +{% endif %} +{% endfor %} + \ + && ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ + \ + && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ + && rm -rf /home/devilbox/.npm \ + && rm -rf /home/devilbox/.config \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) \ + \ + && (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) + + + +### +### Install Python pip packages +### +RUN set -x \ +{% for tool in pip_enabled %} +{# Not disabled #} +{% if ('disabled' not in pip_available[tool]) or (php_version not in pip_available[tool]['disabled']) %} +# {{ tool }} +{# Version specific gem version available? #} +{% if php_version in pip_available[tool] and 'version' in pip_available[tool][php_version] %} + && pip install --no-cache-dir --force-reinstall {{ pip_available[tool]['name'] }}=={{ pip_available[tool][php_version]['version'] }} \ +{# Generic gem version available? #} +{% elif 'all' in pip_available[tool] and 'version' in pip_available[tool]['all'] %} + && pip install --no-cache-dir --force-reinstall {{ pip_available[tool]['name'] }}=={{ pip_available[tool]['all']['version'] }} \ +{# No version info available #} +{% else %} + && pip install --no-cache-dir --force-reinstall {{ pip_available[tool]['name'] }} \ +{% endif %} +{% endif %} +{% endfor %} + \ + && rm -rf /root/.cache/pip \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) \ + \ + && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ + && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ + && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) + + +### +### Install Ruby gems +### +RUN set -x \ +{% for tool in gem_enabled %} +{# Not disabled #} +{% if ('disabled' not in gem_available[tool]) or (php_version not in gem_available[tool]['disabled']) %} +# {{ tool }} +{# Version specific gem version available? #} +{% if php_version in gem_available[tool] and 'version' in gem_available[tool][php_version] %} + && gem install {{ gem_available[tool]['name'] }} -v {{ gem_available[tool][php_version]['version'] }} \ +{# Generic gem version available? #} +{% elif 'all' in gem_available[tool] and 'version' in gem_available[tool]['all'] %} + && gem install {{ gem_available[tool]['name'] }} -v {{ gem_available[tool]['all']['version'] }} \ +{# No version info available #} +{% else %} + && gem install {{ gem_available[tool]['name'] }} \ +{% endif %} +{% endif %} +{% endfor %} + \ + && rm -rf /root/.gem \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -183,7 +279,7 @@ RUN set -x \ ### RUN \ { \ - echo "PATH=\${PATH}:/usr/local/bin:/usr/local/sbin:/usr/local/node/bin"; \ + echo "PATH=\${PATH}:/usr/local/bin:/usr/local/sbin:\${HOME}/.yarn/bin"; \ echo "export PATH"; \ echo ". /etc/bash-devilbox"; \ echo "if [ -d /etc/bashrc-devilbox.d/ ]; then"; \ @@ -219,6 +315,7 @@ RUN set -x \ && rm -f /usr/local/etc/php/php.ini RUN set -x \ +{# ---- SOFTWARE ---- #} {% for tool in software_enabled %} {# Not disabled #} {% if ('disabled' not in software_available[tool]) or (php_version not in software_available[tool]['disabled']) %} @@ -226,8 +323,42 @@ RUN set -x \ && {{ software_available[tool]['check'] }} \ {% endif %} {% endif %} -{% endfor %} - && true +{% endfor %} \ +{# ---- PIP ---- #} +{% for tool in pip_enabled %} +{# Not disabled #} +{% if ('disabled' not in pip_available[tool]) or (php_version not in pip_available[tool]['disabled']) %} +{% if 'check' in pip_available[tool] %} + && {{ pip_available[tool]['check'] }} \ +{% endif %} +{% endif %} +{% endfor %} \ +{# ---- NPM ---- #} +{% for tool in npm_enabled %} +{# Not disabled #} +{% if ('disabled' not in npm_available[tool]) or (php_version not in npm_available[tool]['disabled']) %} +{% if 'check' in npm_available[tool] %} + && {{ npm_available[tool]['check'] }} \ +{% endif %} +{% endif %} +{% endfor %} \ +{# ---- GEM ---- #} +{% for tool in gem_enabled %} +{# Not disabled #} +{% if ('disabled' not in gem_available[tool]) or (php_version not in gem_available[tool]['disabled']) %} +{% if 'check' in gem_available[tool] %} + && {{ gem_available[tool]['check'] }} \ +{% endif %} +{% endif %} +{% endfor %} \ + && rm -rf /home/devilbox/.config/ \ + && rm -rf /root/.ansible \ + && rm -rf /root/.console \ + && rm -rf /root/.composer \ + && rm -rf /root/.drush \ + && rm -rf /root/.pm2 \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) {% endif %} diff --git a/build/ansible/group_vars/all.yml b/build/ansible/group_vars/all.yml deleted file mode 100644 index 554c68d..0000000 --- a/build/ansible/group_vars/all.yml +++ /dev/null @@ -1,1680 +0,0 @@ ---- - -################################################################################ -# Variables for rendering Dockerfiles and configuration -################################################################################ - - -### -### Available PHP versions -### -php_all_versions: - - 5.2 - - 5.3 - - 5.4 - - 5.5 - - 5.6 - - 7.0 - - 7.1 - - 7.2 - - 7.3 - - 7.4 - - 8.0 - - -### -### PHP settings equal for php.ini and php-fpm.comf (used below) -### -php_timeout: 120 - -### -### PHP.ini -### -php_settings_ini: - # ---- Sane default ---- - base: - # Memory - memory_limit: 512M - # Timeouts - max_execution_time: "{{ php_timeout }}" - max_input_time: "{{ php_timeout }}" - # Uploads - # Note: "post_max_size" should be greater than "upload_max_filesize" - post_max_size: 72M - upload_max_filesize: 64M - max_file_uploads: 20 - # Variables - variables_order: EGPCS - max_input_vars: 8000 - max_input_nesting_level: 64 - # Error reporting - error_reporting: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED - xmlrpc_errors: 'Off' - report_memleaks: 'On' - display_errors: 'Off' - display_startup_errors: 'Off' - track_errors: 'On' - log_errors: 'On' - html_errors: 'Off' - # Xdebug settings - xdebug_default_enable: 'Off' - xdebug_profiler_enable: 'Off' - xdebug_remote_enable: 'Off' - xdebug_remote_autostart: 'Off' - - # ---- Inherits from base ---- - mods: - # ---- Inherits from base ---- - prod: - # ---- Inherits from base and overwrites certain values ---- - work: - # Error reporting - error_reporting: E_ALL | E_NOTICE | E_STRICT | E_DEPRECATED - xmlrpc_errors: 'Off' - report_memleaks: 'On' - display_errors: 'On' - display_startup_errors: 'On' - track_errors: 'On' - log_errors: 'On' - html_errors: 'On' - # Xdebug settings - xdebug_default_enable: 'Off' - xdebug_profiler_enable: 'Off' - xdebug_remote_enable: 'Off' - xdebug_remote_autostart: 'Off' - - -### -### PHP-FPM.conf -### -php_settings_fpm: - # ---- Sane default ---- - base: - # Docker - clear_env: 'no' - catch_workers_output: 'yes' - # Timeouts - request_terminate_timeout: "{{ php_timeout }}s" - # Network - listen: 9000 - # Backlog - listen_backlog: 1024 - # Logging - log_level: notice - error_log: /proc/self/fd/2 - access_log: /proc/self/fd/2 - # Worker - pm: ondemand - pm_max_children: 50 # pm: dynamic, ondemand or static - pm_start_servers: 4 # only for pm: dynamic (min_spare + (max_spare-min_spare)/2 - pm_min_spare_servers: 2 # only for pm: dynamic - pm_max_spare_servers: 6 # only for pm: dynamic - pm_max_requests: 500 # pm: dynamic or ondemand - pm_process_idle_timeout: 10s # only for pm: ondemand - - # User/Group - user: devilbox - group: devilbox - # ---- Inherits from base ---- - mods: - # ---- Inherits from base ---- - prod: - # ---- Inherits from base and overwrites certain values ---- - work: - - -### -### Templates for PHP flavours (base, mods, prod and work) for all PHP versions -### - -# Dockerfiles for base, mods, prod and work -template_dockerfiles: - - src: DOCKERFILES/Dockerfile-base.j2 - dst: "../../Dockerfiles/base/Dockerfile-{{ php_version }}" - - src: DOCKERFILES/Dockerfile-mods.j2 - dst: "../../Dockerfiles/mods/Dockerfile-{{ php_version }}" - - src: DOCKERFILES/Dockerfile-prod.j2 - dst: "../../Dockerfiles/prod/Dockerfile-{{ php_version }}" - - src: DOCKERFILES/Dockerfile-work.j2 - dst: "../../Dockerfiles/work/Dockerfile-{{ php_version }}" - -# Configuration files for base, mods, prod and work -template_configurations: - # php.ini - - src: CONFIGURATIONS/php.ini.j2 - dst: "../../Dockerfiles/base/data/php-ini.d/php-{{ php_version }}.ini" - cfg: "{{ php_settings_ini }}" - key: base - alt: base - - src: CONFIGURATIONS/php.ini.j2 - dst: "../../Dockerfiles/work/data/php-ini.d/php-{{ php_version }}.ini" - cfg: "{{ php_settings_ini }}" - key: work - alt: base # Alternative key to use when definition is not set in 'work' - # php-fpm.conf - - src: CONFIGURATIONS/php-fpm.conf.j2 - dst: "../../Dockerfiles/base/data/php-fpm.conf/php-fpm-{{ php_version }}.conf" - cfg: "{{ php_settings_fpm }}" - key: base - alt: base - - src: CONFIGURATIONS/php-fpm.conf.j2 - dst: "../../Dockerfiles/work/data/php-fpm.conf/php-fpm-{{ php_version }}.conf" - cfg: "{{ php_settings_fpm }}" - key: work - alt: base - - -### -### Variables to be used in this file (group_vars/all.yml) -### - -# Adds self-validating checks to Dockerfile -# turn off for final build -debug: True - -# Global variables -compose_home: /usr/local/src/composer - - -################################################################################ -# Defines for Dockerfile "work" -################################################################################ - - -### -### Apt repositories to actually enable -### -apt_repositories_enabled: - - backports - - blackfire - - git - - mongo - - node - - pgsql - - yarn - - -### -### Software to actually install -### -software_enabled: - # Composer needs to be first, others rely on it - - composer - # Normal packages start here - - ansible - - asgardcms - - awesomeci - - codeception - - deployer - - drush7 - - drush8 - - drush9 - - drupalconsole - - gitflow - - grunt - - laravel - - linkcheck - - linuxbrew - - mhsendmail - - mysqldumpsecure - - phalcon - - phpcs - - phpcbf - - php-cs-fixer - - phpunit - - photon - - pm2 - - sass - - symfony - - webpack - - wkhtmltopdf - - wpcli - - yamllint - # Cleanup needs to be last - - cleanup - - -### -### All available extra repositories -### -# all: is generic version of defines -# 7.2: is specific version of defines -# disabled: [optional] Array of PHP versions for which to disable this module -# -# all, 7.2, 7.1, 7.0, 5.6, 5.5, 5.4: -# deb: Deb line to add to sources list -# key: [optional] Key id to add for repository -# pre: [optional] Run custom command to add gpg key for repository -# -apt_repositories_available: - backports: - all: - deb: deb http://ftp.debian.org/debian jessie-backports main - blackfire: - all: - deb: deb http://packages.blackfire.io/debian any main - pre: curl -sS "https://packages.blackfire.io/gpg.key" 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - - git: - 7.2: - deb: deb http://ppa.launchpad.net/git-core/ppa/ubuntu artful main - 7.3: - deb: deb http://ppa.launchpad.net/git-core/ppa/ubuntu artful main - 7.4: - deb: deb http://ppa.launchpad.net/git-core/ppa/ubuntu artful main - 8.0: - deb: deb http://ppa.launchpad.net/git-core/ppa/ubuntu artful main - all: - deb: deb http://ppa.launchpad.net/git-core/ppa/ubuntu wily main - key: A1715D88E1DF1F24 - mongo: - all: - deb: deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.6 main - key: 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5 - node: - 7.2: - deb: deb http://deb.nodesource.com/node_8.x stretch main - 7.3: - deb: deb http://deb.nodesource.com/node_8.x stretch main - 7.4: - deb: deb http://deb.nodesource.com/node_8.x stretch main - 8.0: - deb: deb http://deb.nodesource.com/node_8.x stretch main - all: - deb: deb http://deb.nodesource.com/node_8.x jessie main - pre: curl -sS "https://deb.nodesource.com/gpgkey/nodesource.gpg.key" 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - - pgsql: - 7.2: - deb: deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main - 7.3: - deb: deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main - 7.4: - deb: deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main - 8.0: - deb: deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main - all: - deb: deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main - pre: curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - - yarn: - all: - deb: deb http://dl.yarnpkg.com/debian/ stable main - pre: curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - - - -### -### All available software -### -# all: is generic version of defines -# 7.2: is specific version of defines -# disabled: [optional] Array of PHP versions for which to disable this module -# check: [optional] Include a check command to test if it was installed successfully -# -# all, 7.2, 7.1, 7.0, 5.6, 5.5, 5.4: -# pre: [optional] Run command before 'command:' statement -# command: Command to execute -# pre: [optional] Run command after 'command:' statement -# -software_available: - asgardcms: - disabled: [5.2, 5.3, 5.4, 8.0] - check: asgardcms --version 2>/dev/null | grep -Ei 'AsgardCMS\sInstaller\s[.0-9]+' - all: - command: | - COMPOSER_HOME="{{ compose_home }}" composer global require asgardcms/asgardcms-installer \ - && ln -s {{ compose_home }}/vendor/asgardcms/asgardcms-installer/asgardcms /usr/local/bin/asgardcms \ - ansible: - check: ansible --version | grep -E '^ansible [.0-9]+$' - all: - command: | - /usr/local/bin/pip install --no-cache-dir --upgrade setuptools \ - && /usr/local/bin/pip install --no-cache-dir ansible \ - awesomeci: - check: | - mdl --version | grep -E '[.0-9]+' \ - && scss-lint --version | grep -E '[.0-9]+' \ - && eslint -v | grep -E '[.0-9]+' \ - && jsonlint --version | grep -E '[.0-9]+' \ - && mdlint --version | grep -E '[.0-9]+' \ - && gulp --version | grep -E '[.0-9]+' \ - all: - command: | - git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \ - && cd /usr/local/src/awesome-ci \ - && git checkout $(git describe --abbrev=0 --tags) \ - && ./configure --prefix=/usr/local \ - && make install \ - && cd / \ - && rm -rf /usr/local/src/awesome-ci \ - # awesome-ci requirements - post: | - gem install mixlib-config -v 2.2.4 \ - && gem install rb-inotify -v 0.9.10 \ - && gem install mdl \ - && gem install scss_lint \ - && yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y eslint \ - && yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y jsonlint \ - && yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y mdlint \ - && yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y gulp \ - && rm -rf /tmp/y \ - composer: - disabled: [5.2] - check: composer --version 2>/dev/null | grep -E 'version\s*[.0-9]+' - all: - command: curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer - deployer: - disabled: [5.2, 5.3] - check: dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[.0-9]+' - 5.4: - command: curl -sS https://deployer.org/releases/v3.3.0/deployer.phar -L -o /usr/local/bin/dep - post: chmod +x /usr/local/bin/dep - 5.5: - command: curl -sS https://deployer.org/releases/v4.3.4/deployer.phar -L -o /usr/local/bin/dep - post: chmod +x /usr/local/bin/dep - 5.6: - command: curl -sS https://deployer.org/releases/v4.3.4/deployer.phar -L -o /usr/local/bin/dep - post: chmod +x /usr/local/bin/dep - all: - command: curl -sS https://deployer.org/deployer.phar -L -o /usr/local/bin/dep - post: chmod +x /usr/local/bin/dep - drush7: - disabled: [5.2, 8.0] - check: drush7 --version | grep -E '7[.0-9]+\s*$' - all: - pre: | - git clone https://github.com/drush-ops/drush.git /usr/local/src/drush7 \ - && cd /usr/local/src/drush7 \ - && git checkout 7.4.0 \ - command: | - chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush7 \ - && su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush7 && composer install --no-interaction --no-progress --no-dev' \ - && ln -s /usr/local/src/drush7/drush /usr/local/bin/drush7 \ - && rm -rf /usr/local/src/drush7/.git \ - && rm -rf /usr/local/src/drush7/docs \ - && rm -rf /usr/local/src/drush7/examples \ - && rm -rf /usr/local/src/drush7/misc \ - drush8: - disabled: [5.2, 5.3, 8.0] - check: drush8 --version | grep -E '8[.0-9]+\s*$' - all: - pre: | - git clone https://github.com/drush-ops/drush.git /usr/local/src/drush8 \ - && cd /usr/local/src/drush8 \ - && git checkout $( git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname)' refs/tags | sort -n | grep -E 'tags/8[.0-9]+$' | tail -1 | sed 's|.*/||g' ) \ - command: | - chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush8 \ - && su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush8 && composer install --no-interaction --no-progress --no-dev' \ - && ln -s /usr/local/src/drush8/drush /usr/local/bin/drush8 \ - && rm -rf /usr/local/src/drush8/.git \ - && rm -rf /usr/local/src/drush8/docs \ - && rm -rf /usr/local/src/drush8/examples \ - && rm -rf /usr/local/src/drush8/misc \ - drush9: - disabled: [5.2, 5.3, 5.4, 5.5, 8.0] - check: drush9 --version | grep -E '9[.0-9]+\s*$' - all: - pre: | - git clone https://github.com/drush-ops/drush.git /usr/local/src/drush9 \ - && cd /usr/local/src/drush9 \ - && git checkout $( git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname)' refs/tags | sort -n | grep -E 'tags/9[.0-9]+$' | tail -1 | sed 's|.*/||g' ) \ - command: | - chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush9 \ - && su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush9 && php -d memory_limit=-1 `which composer` install --no-interaction --no-progress' \ - && ln -s /usr/local/src/drush9/drush /usr/local/bin/drush9 \ - && rm -rf /usr/local/src/drush9/.git \ - && rm -rf /usr/local/src/drush9/docs \ - && rm -rf /usr/local/src/drush9/examples \ - && rm -rf /usr/local/src/drush9/misc \ - codeception: - disabled: [5.2, 8.0] - check: codecept --version 2>/dev/null | grep -E '^Codeception(\sversion)?\s[.0-9]+$' - all: - command: | - COMPOSER_HOME="{{ compose_home }}" composer global require codeception/codeception \ - && ln -s {{ compose_home }}/vendor/codeception/codeception/codecept /usr/local/bin/codecept \ - drupalconsole: - disabled: [5.2, 5.3, 5.4] - check: drupal --version | grep -E 'Drupal Console Launcher\s*[.0-9]' - all: - command: curl https://drupalconsole.com/installer -L -o /usr/local/bin/drupal - post: chmod +x /usr/local/bin/drupal - gitflow: - check: git-flow version | grep -E '[.0-9]+' - all: - command: | - git clone git://github.com/petervanderdoes/gitflow.git /tmp/gitflow \ - && cd /tmp/gitflow \ - && make install \ - && cd / && rm -rf /tmp/gitflow \ - grunt: - check: grunt --version | grep -E '[.0-9]+' - all: - command: | - until yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y grunt; do sleep 1; done \ - && until yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y grunt-cli; do sleep 1; done \ - && rm -rf /tmp/y \ - laravel: - check: laravel --version | grep -E '(Installer|version)\s*[.0-9]+' - disabled: [5.2, 5.3, 8.0] - 5.4: - pre: | - git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \ - && cd /usr/local/src/laravel-installer \ - && git checkout v1.3.7 \ - 5.5: - pre: | - git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \ - && cd /usr/local/src/laravel-installer \ - && git checkout v2.0.0 \ - 5.6: - pre: | - git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \ - && cd /usr/local/src/laravel-installer \ - && git checkout v2.0.0 \ - 7.0: - pre: | - git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \ - && cd /usr/local/src/laravel-installer \ - && git checkout v2.0.0 \ - all: - pre: | - git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \ - && cd /usr/local/src/laravel-installer \ - && git checkout $(git describe --abbrev=0 --tags) \ - command: | - chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/laravel-installer \ - && su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/laravel-installer && composer install --no-interaction --no-progress --no-dev' \ - && ln -s /usr/local/src/laravel-installer/laravel /usr/local/bin/laravel \ - && rm -rf /usr/local/src/laravel-installer/laravel/.git \ - linkcheck: - check: linkcheck --version | grep -E '^linkcheck\sv[.0-9]+' - all: - command: | - curl https://raw.githubusercontent.com/cytopia/linkcheck/master/linkcheck > /usr/local/bin/linkcheck \ - && chmod +x /usr/local/bin/linkcheck \ - linuxbrew: - check: su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew --version' | grep -E 'Homebrew\s*[.0-9]+' - all: - command: | - git clone https://github.com/Linuxbrew/brew.git /usr/local/src/linuxbrew \ - && chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/linuxbrew \ - && v="${BASH_PROFILE}" su ${MY_USER} -c -p \ - 'echo "PATH=/usr/local/src/linuxbrew/bin:/usr/local/src/linuxbrew/sbin:/usr/bin:/usr/sbin:/bin:/sbin" >> /home/devilbox/${v}' \ - && v="${BASH_PROFILE}" su ${MY_USER} -c -p \ - 'echo "export MANPATH=/usr/local/src/linuxbrew/share/man:${MANPATH}" >> /home/devilbox/${v}' \ - && v="${BASH_PROFILE}" su ${MY_USER} -c -p \ - 'echo "export INFOPATH=/usr/local/src/linuxbrew/share/man:${INFOPATH}" >> /home/devilbox/${v}' \ - && su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew config' \ - mhsendmail: - all: - command: | - wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ - && chmod +x mhsendmail_linux_amd64 \ - && mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ - mysqldumpsecure: - check: mysqldump-secure --version | grep -E 'Version:\s*[.0-9]+' - all: - command: | - git clone https://github.com/cytopia/mysqldump-secure.git /usr/local/src/mysqldump-secure \ - && cd /usr/local/src/mysqldump-secure \ - && git checkout $(git describe --abbrev=0 --tags) \ - && cp /usr/local/src/mysqldump-secure/bin/mysqldump-secure /usr/local/bin \ - && cp /usr/local/src/mysqldump-secure/etc/mysqldump-secure.conf /etc \ - && cp /usr/local/src/mysqldump-secure/etc/mysqldump-secure.cnf /etc \ - && touch /var/log/mysqldump-secure.log \ - && chown ${MY_USER}:${MY_GROUP} /etc/mysqldump-secure.* \ - && chown ${MY_USER}:${MY_GROUP} /var/log/mysqldump-secure.log \ - && chmod 0400 /etc/mysqldump-secure.conf \ - && chmod 0400 /etc/mysqldump-secure.cnf \ - && chmod 0644 /var/log/mysqldump-secure.log \ - && sed -i'' 's/^COMPRESS_ARG=.*/COMPRESS_ARG="-9 -c"/g' /etc/mysqldump-secure.conf \ - && sed -i'' 's/^DUMP_DIR=.*/DUMP_DIR="\/shared\/backups\/mysql"/g' /etc/mysqldump-secure.conf \ - && sed -i'' 's/^DUMP_DIR_CHMOD=.*/DUMP_DIR_CHMOD="0755"/g' /etc/mysqldump-secure.conf \ - && sed -i'' 's/^DUMP_FILE_CHMOD=.*/DUMP_FILE_CHMOD="0644"/g' /etc/mysqldump-secure.conf \ - && sed -i'' 's/^LOG_CHMOD=.*/LOG_CHMOD="0644"/g' /etc/mysqldump-secure.conf \ - && sed -i'' 's/^NAGIOS_LOG=.*/NAGIOS_LOG=0/g' /etc/mysqldump-secure.conf \ - && cd / \ - && rm -rf /usr/local/src/mysqldump-secure \ - phalcon: - disabled: [5.2, 7.3, 7.4, 8.0] - check: phalcon commands | grep -E '[.0-9]+' - 5.3: - pre: | - git clone https://github.com/phalcon/phalcon-devtools /usr/local/src/phalcon-devtools \ - && cd /usr/local/src/phalcon-devtools \ - && git checkout v2.0.7 \ - 5.4: - pre: | - git clone https://github.com/phalcon/phalcon-devtools /usr/local/src/phalcon-devtools \ - && cd /usr/local/src/phalcon-devtools \ - && git checkout v2.0.9 \ - all: - pre: | - git clone https://github.com/phalcon/phalcon-devtools /usr/local/src/phalcon-devtools \ - && cd /usr/local/src/phalcon-devtools \ - && git checkout $(git describe --abbrev=0 --tags) \ - command: | - chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/phalcon-devtools \ - && su - ${MY_USER} -c 'cd /usr/local/src/phalcon-devtools && ./phalcon.sh' \ - && ln -s /usr/local/src/phalcon-devtools/phalcon.php /usr/local/bin/phalcon \ - && cd / \ - && rm -rf /usr/local/src/phalcon-devtools/.git \ - phpcs: - check: phpcs --version | grep -E 'version [.0-9]+' - 5.2: - command: | - curl -sS -L https://github.com/squizlabs/PHP_CodeSniffer/releases/download/2.9.0/phpcs.phar > /usr/local/bin/phpcs 2>/dev/null \ - && chmod +x /usr/local/bin/phpcs \ - 5.3: - command: | - curl -sS -L https://github.com/squizlabs/PHP_CodeSniffer/releases/download/2.9.0/phpcs.phar > /usr/local/bin/phpcs 2>/dev/null \ - && chmod +x /usr/local/bin/phpcs \ - all: - command: | - curl -sS -L https://squizlabs.github.io/PHP_CodeSniffer/phpcs.phar > /usr/local/bin/phpcs 2>/dev/null \ - && chmod +x /usr/local/bin/phpcs \ - phpcbf: - check: phpcbf --version | grep -E 'version [.0-9]+' - 5.2: - command: | - curl -sS -L https://github.com/squizlabs/PHP_CodeSniffer/releases/download/2.9.0/phpcbf.phar > /usr/local/bin/phpcbf 2>/dev/null \ - && chmod +x /usr/local/bin/phpcbf \ - 5.3: - command: | - curl -sS -L https://github.com/squizlabs/PHP_CodeSniffer/releases/download/2.9.0/phpcbf.phar > /usr/local/bin/phpcbf 2>/dev/null \ - && chmod +x /usr/local/bin/phpcbf \ - all: - command: | - curl -sS -L https://squizlabs.github.io/PHP_CodeSniffer/phpcbf.phar > /usr/local/bin/phpcbf 2>/dev/null \ - && chmod +x /usr/local/bin/phpcbf \ - php-cs-fixer: - disabled: [5.2, 7.4, 8.0] - check: php-cs-fixer --version 2>&1 | grep -E 'Fixer\s+(version\s*)?[-_.0-9]+\s+' - 5.3: - command: | - curl -sS -L https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/download/v2.2.19/php-cs-fixer.phar > /usr/local/bin/php-cs-fixer 2>/dev/null \ - && chmod +x /usr/local/bin/php-cs-fixer \ - 5.4: - command: | - curl -sS -L https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/download/v2.2.19/php-cs-fixer.phar > /usr/local/bin/php-cs-fixer 2>/dev/null \ - && chmod +x /usr/local/bin/php-cs-fixer \ - 5.5: - command: | - curl -sS -L https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/download/v2.2.19/php-cs-fixer.phar > /usr/local/bin/php-cs-fixer 2>/dev/null \ - && chmod +x /usr/local/bin/php-cs-fixer \ - all: - command: | - curl -sS -L https://cs.symfony.com/download/php-cs-fixer-v2.phar > /usr/local/bin/php-cs-fixer 2>/dev/null \ - && chmod +x /usr/local/bin/php-cs-fixer \ - phpunit: - disabled: [5.2, 8.0] - check: phpunit --version | grep -iE '^PHPUnit\s[.0-9]+' - 5.3: - command: | - curl -qL https://phar.phpunit.de/phpunit-4.phar > /usr/local/bin/phpunit 2>/dev/null \ - && chmod +x /usr/local/bin/phpunit \ - 5.4: - command: | - curl -qL https://phar.phpunit.de/phpunit-4.phar > /usr/local/bin/phpunit 2>/dev/null \ - && chmod +x /usr/local/bin/phpunit \ - 5.5: - command: | - curl -qL https://phar.phpunit.de/phpunit-4.phar > /usr/local/bin/phpunit 2>/dev/null \ - && chmod +x /usr/local/bin/phpunit \ - 5.6: - command: | - curl -qL https://phar.phpunit.de/phpunit-5.phar > /usr/local/bin/phpunit 2>/dev/null \ - && chmod +x /usr/local/bin/phpunit \ - 7.0: - command: | - curl -qL https://phar.phpunit.de/phpunit-6.phar > /usr/local/bin/phpunit 2>/dev/null \ - && chmod +x /usr/local/bin/phpunit \ - all: - command: | - curl -qL https://phar.phpunit.de/phpunit-7.phar > /usr/local/bin/phpunit 2>/dev/null \ - && chmod +x /usr/local/bin/phpunit \ - photon: - disabled: [5.2, 5.3, 5.4, 8.0] - check: photon --version | grep -E 'Installer [.0-9]+' - all: - command: | - COMPOSER_HOME="{{ compose_home }}" composer global require "photoncms/installer" \ - && ln -s {{ compose_home }}/vendor/photoncms/installer/photon /usr/local/bin/photon \ - # https://github.com/Unitech/pm2 - pm2: - check: pm2 --no-daemon --version | grep -E '[.0-9]+' - all: - command: until npm install pm2 -g; do sleep 1; done - sass: - check: sass --version | grep -E '[.0-9]+' - all: - command: gem install sass - symfony: - disabled: [5.2, 5.3] - check: symfony --version | grep -E 'version\s*[.0-9]+' - all: - command: curl https://symfony.com/installer -L -o /usr/local/bin/symfony - post: chmod +x /usr/local/bin/symfony - wkhtmltopdf: - check: wkhtmltopdf --version | grep -E "^wkhtmltopdf [.0-9]+\s+\(.+patched.+\)" - 5.2: - pre: VERSION="$( curl -sSL https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+jessie_amd64\.deb' | head -1 )" - 5.3: - pre: VERSION="$( curl -sSL https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+jessie_amd64\.deb' | head -1 )" - 5.4: - pre: VERSION="$( curl -sSL https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+jessie_amd64\.deb' | head -1 )" - 5.5: - pre: VERSION="$( curl -sSL https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+jessie_amd64\.deb' | head -1 )" - all: - pre: VERSION="$( curl -sSL https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+stretch_amd64\.deb' | head -1 )" - command: | - DEBIAN_FRONTEND=noninteractive apt-get update -qq \ - && DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ - libfontenc1 libxfont1 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \ - && curl -sS -L -o /tmp/wkhtmltopdf.deb https://github.com/${VERSION} \ - && dpkg -i /tmp/wkhtmltopdf.deb \ - && rm -f /tmp/wkhtmltopdf.deb \ - post: | - DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \ - && rm -rf /var/lib/apt/lists/* \ - wpcli: - disabled: [5.2] - check: wp --allow-root --version | grep -E '[.0-9]+' - 5.3: - command: curl https://github.com/wp-cli/wp-cli/releases/download/v1.5.1/wp-cli-1.5.1.phar -L -o /usr/local/bin/wp - post: chmod +x /usr/local/bin/wp - all: - command: curl https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp - post: chmod +x /usr/local/bin/wp - webpack: - check: webpack --version | grep -E '[.0-9]+' - all: - command: | - yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y webpack \ - && yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y webpack-cli \ - && rm -rf /tmp/y \ - yamllint: - check: yamllint --version 2>&1 | grep -E '[.0-9]+' - all: - pre: | - DEBIAN_FRONTEND=noninteractive apt-get update -qq \ - && DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests libpython-dev python-setuptools libyaml-dev \ - command: /usr/local/bin/pip install --no-cache-dir yamllint - post: | - DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false libpython-dev python-setuptools libyaml-dev \ - && rm -rf /var/lib/apt/lists/* \ - cleanup: - all: - command: | - rm -rf /home/${MY_USER}/.*json \ - && rm -rf /home/${MY_USER}/.cache \ - && rm -rf /home/${MY_USER}/.composer \ - && rm -rf /home/${MY_USER}/.config \ - && rm -rf /home/${MY_USER}/.drush \ - && rm -rf /home/${MY_USER}/.gem \ - && rm -rf /home/${MY_USER}/.npm \ - && rm -rf /home/${MY_USER}/.subversion \ - && rm -rf /home/${MY_USER}/.v8* \ - \ - && rm -rf /root/.*json \ - && rm -rf /root/.cache \ - && rm -rf /root/.composer \ - && rm -rf /root/.config \ - && rm -rf /root/.drush \ - && rm -rf /root/.gem \ - && rm -rf /root/.npm \ - && rm -rf /root/.subversion \ - && rm -rf /root/.v8* \ - \ - && rm -rf /tmp/* \ - - -################################################################################ -# Defines for Dockerfile "mods" -################################################################################ - -### -### Extensions to actually enable -### -extensions_enabled: - # ioncube must be loaded first - - ioncube - - amqp - - apcu - - bcmath - - blackfire - - bz2 - - calendar - - ctype - - curl - - dba - - dom - - enchant - - exif - - ffi - - fileinfo - - filter - - ftp - - gd - - gettext - - gmp - - hash - - iconv - - igbinary - - imagick - - imap - - interbase - - intl - - json - - ldap - - libxml - - mbstring - - mcrypt - - msgpack - - memcache - # requires igbinary and msgpack to be installed - - memcached - - mongo - - mongodb - - mysql - - mysqli - - mysqlnd - - oci8 - - odbc - - opcache - - openssl - - pcntl - - pcre - - pdo - - pdo_dblib - - pdo_firebird - - pdo_mysql - - pdo_oci - - pdo_odbc - - pdo_pgsql - - pdo_sqlite - - pdo_sqlsrv - - pgsql - - phalcon - - phar - - posix - - pspell - - readline - - recode - - redis - - reflection - - rdkafka - - session - - shmop - - simplexml - - snmp - - soap - - sockets - - sodium - - spl - - sqlsrv - - swoole - - sysvmsg - - sysvsem - - sysvshm - - tidy - - tokenizer - - uploadprogress - - wddx - - xdebug - - xml - - xmlreader - - xmlrpc - - xmlwriter - - xsl - - zip - - -### -### All available php modules -### -# all: is generic version of defines -# 7.2: is specific version of defines -# disabled: [optional] Array of PHP versions for which to disable this module -# already_avail: [optional] Array of PHP versions for which we don't install the module, but -# the dependencies, as it is already loaded by core -# -# all, 7.2, 7.1, 7.0, 5.6, 5.5, 5.4: -# pre: [optional] Run command before anything else -# build_dep: [optional] Array of build dependencies -# run_dep: [optional] Array of run-time dependencies -# type: [required] One of 'builtin', 'pecl' or 'git' -# -# type: builtin -# configure: [optional] Add './configure' arguments -# type: pecl -# version: [optional] Pecl packet version -# command: [optional] Overwrite pecl command (pecl install ext) -# type: git -# git_url: [required] Git repository URL -# git_ref: [optional] Tag, branch, commit to checkout -# configure: [optional] Add './configure' arguments -# command: [optional] Overwrite default command (phpize && ./configure && make && make install) -# type: custom -# command: [required] Custom command to install and enable a module -extensions_available: - amqp: - disabled: [7.3, 7.4, 8.0] - 5.2: - run_dep: [librabbitmq1] - type: pecl - version: 1.4.0 - 5.3: - type: pecl - version: 1.9.3 - run_dep: [librabbitmq1] - 5.4: - type: pecl - version: 1.9.3 - run_dep: [librabbitmq1] - 5.5: - type: pecl - version: 1.9.3 - run_dep: [librabbitmq1] - all: - type: pecl - command: echo "/usr" | pecl install amqp - build_dep: [librabbitmq-dev] - run_dep: [librabbitmq4] - apcu: - disabled: [5.2, 7.4, 8.0] - 5.3: - type: pecl - version: 4.0.11 - 5.4: - type: pecl - version: 4.0.11 - 5.5: - type: pecl - version: 4.0.11 - 5.6: - type: pecl - version: 4.0.11 - all: - type: pecl - bcmath: - all: - type: builtin - blackfire: - disabled: [5.2, 5.3, 5.4, 5.5, 7.4, 8.0] - all: - type: custom - command: | - version=$(php -r "echo PHP_MAJOR_VERSION.PHP_MINOR_VERSION;") \ - && curl -A "Docker" -o /tmp/blackfire-probe.tar.gz -D - -L -s https://blackfire.io/api/v1/releases/probe/php/linux/amd64/$version \ - && mkdir -p /tmp/blackfire \ - && tar zxpf /tmp/blackfire-probe.tar.gz -C /tmp/blackfire \ - && mv /tmp/blackfire/blackfire-*.so $(php -r "echo ini_get('extension_dir');")/blackfire.so \ - && rm -rf /tmp/blackfire /tmp/blackfire-probe.tar.gz \ - bz2: - all: - type: builtin - build_dep: [libbz2-dev] - calendar: - all: - type: builtin - ctype: - already_avail: "{{ php_all_versions }}" - curl: - already_avail: "{{ php_all_versions }}" - dba: - all: - type: builtin - dom: - already_avail: "{{ php_all_versions }}" - enchant: - 5.2: - type: pecl - command: echo "/usr" | pecl install enchant - all: - type: builtin - build_dep: [libenchant-dev] - run_dep: [libenchant1c2a] - exif: - all: - type: builtin - ffi: - disabled: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3] - all: - type: git - git_url: https://github.com/dstogov/php-ffi - command: | - phpize \ - && ./configure --with-ffi \ - && make -j$(getconf _NPROCESSORS_ONLN) \ - && make install \ - build_dep: [libffi-dev] - run_dep: [libffi6] - fileinfo: - already_avail: [5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4, 8.0] - 5.2: - type: pecl - build_dep: [libmagic-dev] - all: - type: builtin - filter: - already_avail: "{{ php_all_versions }}" # Available by default - ftp: - already_avail: [5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4, 8.0] - all: - type: builtin - configure: --with-openssl-dir - build_dep: [libssl-dev] - gd: - 5.2: - type: builtin - pre: | - ln -s /usr/lib/x86_64-linux-gnu/libjpeg.* /usr/lib/ && \ - ln -s /usr/lib/x86_64-linux-gnu/libpng.* /usr/lib/ && \ - ln -s /usr/lib/x86_64-linux-gnu/libXpm.* /usr/lib/ && \ - mkdir /usr/include/freetype2/freetype && \ - ln -s /usr/include/freetype2/freetype.h /usr/include/freetype2/freetype/freetype.h \ - configure: --with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-jis-conv --enable-gd-native-ttf - build_dep: [libpng-dev, libjpeg-dev, libxpm-dev, libvpx-dev, zlib1g-dev, libfreetype6-dev] - run_dep: [libpng12-0, libjpeg62-turbo, libxpm4, libvpx1, libfreetype6] - 5.3: - type: builtin - pre: ln -s /usr/lib/x86_64-linux-gnu/libXpm.* /usr/lib/ && mkdir /usr/include/freetype2/freetype && ln -s /usr/include/freetype2/freetype.h /usr/include/freetype2/freetype/freetype.h - configure: --with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-jis-conv --enable-gd-native-ttf - build_dep: [libpng-dev, libjpeg-dev, libxpm-dev, libvpx-dev, zlib1g-dev, libfreetype6-dev] - run_dep: [libpng12-0, libjpeg62-turbo, libxpm4, libvpx1, libfreetype6] - 5.4: - type: builtin - pre: ln -s /usr/lib/x86_64-linux-gnu/libXpm.* /usr/lib/ - configure: --with-gd --with-vpx-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-jis-conv --enable-gd-native-ttf - build_dep: [libpng-dev, libjpeg-dev, libxpm-dev, libvpx-dev, zlib1g-dev, libfreetype6-dev] - run_dep: [libpng12-0, libjpeg62-turbo, libxpm4, libvpx1, libfreetype6] - 5.5: - type: builtin - pre: ln -s /usr/lib/x86_64-linux-gnu/libXpm.* /usr/lib/ - configure: --with-gd --with-vpx-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-jis-conv --enable-gd-native-ttf - build_dep: [libpng-dev, libjpeg-dev, libxpm-dev, libvpx-dev, zlib1g-dev, libfreetype6-dev] - run_dep: [libpng12-0, libjpeg62-turbo, libxpm4, libvpx1, libfreetype6] - 5.6: - type: builtin - pre: ln -s /usr/lib/x86_64-linux-gnu/libXpm.* /usr/lib/ - configure: --with-gd --with-vpx-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-jis-conv --enable-gd-native-ttf - 7.0: - type: builtin - configure: --with-gd --with-webp-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-jis-conv --enable-gd-native-ttf - 7.1: - type: builtin - configure: --with-gd --with-webp-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-jis-conv --enable-gd-native-ttf - 7.2: - type: builtin - configure: --with-gd --with-webp-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-jis-conv - 7.3: - type: builtin - configure: --with-gd --with-webp-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-jis-conv - 7.4: - type: builtin - configure: --with-gd --with-webp-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-jis-conv - 8.0: - type: builtin - configure: --with-gd --with-webp-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-jis-conv - all: - type: builtin - pre: ln -s /usr/lib/x86_64-linux-gnu/libXpm.* /usr/lib/ - configure: --with-gd --with-vpx-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-jis-conv --enable-gd-native-ttf - build_dep: [libpng-dev, libjpeg-dev, libxpm-dev, libvpx-dev, zlib1g-dev, libfreetype6-dev, libwebp-dev] - run_dep: [libpng16-16, libjpeg62-turbo, libxpm4, libvpx4, libfreetype6, libwebp6] - gettext: - all: - type: builtin - gmp: - disabled: [5.2] - all: - type: builtin - pre: ln /usr/include/x86_64-linux-gnu/gmp.h /usr/include/ - build_dep: [libgmp-dev] - hash: - already_avail: "{{ php_all_versions }}" - iconv: - already_avail: "{{ php_all_versions }}" - igbinary: - disabled: [8.0] - 5.2: - type: pecl - version: 2.0.7 - 5.3: - type: pecl - version: 2.0.8 - 5.4: - type: pecl - version: 2.0.8 - 5.5: - type: pecl - version: 2.0.8 - 5.6: - type: pecl - version: 2.0.8 - all: - type: pecl - imagick: - disabled: [5.2, 7.4, 8.0] - 5.3: - type: pecl - version: 3.3.0 - run_dep: [libmagickwand-6.q16-2] - 5.4: - type: pecl - run_dep: [libmagickwand-6.q16-2] - 5.5: - type: pecl - run_dep: [libmagickwand-6.q16-2] - all: - type: pecl - build_dep: [libmagickwand-dev] - run_dep: [libmagickwand-6.q16-3] - imap: - disabled: [7.4, 8.0] # TODO: re-enable. currently fails with: configure: error: OpenSSL libraries not found. - all: - type: builtin - pre: ln -s /usr/lib/x86_64-linux-gnu/libkrb5* /usr/lib/ - configure: --with-kerberos --with-imap-ssl --with-imap - build_dep: [libc-client-dev, libkrb5-dev, libcurl4-openssl-dev] - run_dep: [libc-client2007e] - interbase: - all: - type: builtin - build_dep: [libfbclient2, libib-util, firebird-dev] - run_dep: [libfbclient2] - intl: - 5.2: - type: pecl - run_dep: [libicu52] - 5.3: - type: builtin - run_dep: [libicu52] - 5.4: - type: builtin - run_dep: [libicu52] - 5.5: - type: builtin - run_dep: [libicu52] - all: - type: builtin - build_dep: [libicu-dev] - run_dep: [libicu57] - ioncube: - disabled: [7.3, 7.4, 8.0] - all: - type: custom - command: | - EXTENSION_DIR="$( php -i | grep ^extension_dir | awk -F '=>' '{print $2}' | xargs )" \ - && if [ ! -d "${EXTENSION_DIR}" ]; then mkdir -p "${EXTENSION_DIR}"; fi \ - && curl https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz -L -o ioncube.tar.gz \ - && tar xvfz ioncube.tar.gz \ - && cd ioncube \ - && cp "ioncube_loader_lin_{{ php_version }}.so" "${EXTENSION_DIR}/ioncube.so" \ - && cd ../ \ - && rm -rf ioncube \ - && rm -rf ioncube.tar.gz \ - json: - already_avail: "{{ php_all_versions }}" - ldap: - all: - type: builtin - pre: ln -s /usr/lib/x86_64-linux-gnu/libldap* /usr/lib/ - configure: --with-ldap --with-ldap-sasl - build_dep: [libldap2-dev, libsasl2-dev] - libxml: - already_avail: "{{ php_all_versions }}" # Available by default - mbstring: - already_avail: [5.2, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4, 8.0] - all: - type: builtin - mcrypt: - disabled: [7.4, 8.0] - 7.2: - type: pecl - version: 1.0.1 - 7.3: - type: pecl - version: 1.0.2 - all: - type: builtin - run_dep: [libmcrypt4] - build_dep: [libmcrypt-dev] - memcache: - disabled: [7.3, 7.4, 8.0] - 7.0: - type: git - git_url: https://github.com/websupport-sk/pecl-memcache - git_ref: origin/php7 - configure: --with-zlib-dir=/usr - 7.1: - type: git - git_url: https://github.com/websupport-sk/pecl-memcache - git_ref: origin/php7 - configure: --with-zlib-dir=/usr - 7.2: - type: git - git_url: https://github.com/websupport-sk/pecl-memcache - git_ref: origin/php7 - configure: --with-zlib-dir=/usr - all: - type: pecl - build_dep: [zlib1g-dev] - memcached: - 5.2: - type: pecl - version: 2.1.0 - 5.3: - type: pecl - version: 2.2.0 - 5.4: - type: pecl - version: 2.2.0 - 5.5: - type: pecl - version: 2.2.0 - 5.6: - type: pecl - version: 2.2.0 - 7.4: - type: git - git_url: https://github.com/php-memcached-dev/php-memcached - git_ref: master - command: phpize && ./configure --enable-memcached && make -j$(getconf _NPROCESSORS_ONLN) && make install - 8.0: - type: git - git_url: https://github.com/php-memcached-dev/php-memcached - git_ref: master - command: phpize && ./configure --enable-memcached && make -j$(getconf _NPROCESSORS_ONLN) && make install - all: - type: pecl - #version: 3.0.4 # TODO: check if this version works - build_dep: [zlib1g-dev, libmemcached-dev, libevent-dev] - run_dep: [libmemcachedutil2] - mongo: - disabled: [7.0, 7.1, 7.2, 7.3, 7.4, 8.0] # Deprecated - 5.2: - type: pecl - command: yes | pecl install mongo-1.5.8 - all: - type: pecl - command: yes | pecl install mongo - build_dep: [libssl-dev, libsasl2-dev] - mongodb: - disabled: [5.2] - 5.3: - type: pecl - version: 0.6.3 - 5.4: - type: pecl - version: 1.2.11 - 8.0: - type: git - git_url: https://github.com/mongodb/mongo-php-driver - command: | - git submodule update --init \ - && phpize \ - && ./configure --enable-mongodb \ - && make all \ - && make install \ - all: - type: pecl - build_dep: [libssl-dev, libsasl2-dev] - msgpack: - disabled: [7.4, 8.0] - 5.2: - type: pecl - version: 0.5.7 - 5.3: - type: pecl - version: 0.5.7 - 5.4: - type: pecl - version: 0.5.7 - 5.5: - type: pecl - version: 0.5.7 - 5.6: - type: pecl - version: 0.5.7 - all: - type: pecl - mysql: - already_avail: [5.2, 5.3] - disabled: [7.0, 7.1, 7.2, 7.3, 7.4, 8.0] # Deprecated in newer versions - 5.6: - type: builtin - run_dep: [libmariadbclient18] - all: - type: builtin - run_dep: [libmysqlclient18] - mysqli: - already_avail: [5.2] - all: - type: builtin - mysqlnd: - disabled: [5.2] - already_avail: [5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4, 8.0] - oci8: - disabled: [5.2] - all: - type: builtin - configure: --with-oci8=instantclient,/usr/lib/oracle/18.3/client64/lib/,18.3 - pre: | - rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \ - && curl -o /tmp/oracle-instantclient18.3-basiclite-18.3.0.0.0-2.x86_64.rpm \ - https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/x86_64/getPackage/oracle-instantclient18.3-basiclite-18.3.0.0.0-2.x86_64.rpm \ - && curl -o /tmp/oracle-instantclient18.3-devel-18.3.0.0.0-2.x86_64.rpm \ - https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/x86_64/getPackage/oracle-instantclient18.3-devel-18.3.0.0.0-2.x86_64.rpm \ - && alien -i /tmp/oracle-instantclient18.3-basiclite-18.3.0.0.0-2.x86_64.rpm \ - && alien -i /tmp/oracle-instantclient18.3-devel-18.3.0.0.0-2.x86_64.rpm \ - && rm -f /tmp/oracle-instantclient18.3-basiclite-18.3.0.0.0-2.x86_64.rpm \ - && rm -f /tmp/oracle-instantclient18.3-devel-18.3.0.0.0-2.x86_64.rpm \ - && (ln -s /usr/lib/oracle/18.3/client64/lib/*.so* /usr/lib/ || true) \ - build_dep: [alien, libaio-dev] - run_dep: [libaio1] - odbc: - disabled: "{{ php_all_versions }}" # TODO: sqlext.h' not found! - opcache: - 5.2: - type: pecl - command: pecl install zendopcache - 5.3: - type: pecl - command: pecl install zendopcache - 5.4: - type: pecl - command: pecl install zendopcache - all: - type: builtin - openssl: - already_avail: "{{ php_all_versions }}" - pcntl: - all: - type: builtin - pcre: - already_avail: "{{ php_all_versions }}" - pdo: - already_avail: "{{ php_all_versions }}" - pdo_dblib: - all: - type: builtin - pre: ln -s /usr/lib/x86_64-linux-gnu/libsybdb.* /usr/lib/ - build_dep: [freetds-dev] - run_dep: [libsybdb5] - pdo_firebird: - all: - type: builtin - build_dep: [libfbclient2, libib-util, firebird-dev] - run_dep: [libfbclient2] - pdo_mysql: - already_avail: [5.2] - all: - type: builtin - configure: --with-zlib-dir=/usr - build_dep: [zlib1g-dev] - pdo_oci: - disabled: [5.2, 5.3, 5.4, 5.5, 5.6] - 8.0: - type: builtin - configure: --with-pdo-oci=instantclient,/usr/lib/oracle/18.3/client64/lib/,18.3 - 7.4: - type: builtin - configure: --with-pdo-oci=instantclient,/usr/lib/oracle/18.3/client64/lib/,18.3 - 7.3: - type: builtin - configure: --with-pdo-oci=instantclient,/usr/lib/oracle/18.3/client64/lib/,18.3 - 7.2: - type: builtin - configure: --with-pdo-oci=instantclient,/usr/lib/oracle/18.3/client64/lib/,18.3 - all: - type: builtin - configure: --with-pdo-oci=instantclient,/usr,18.3 - pre: | - rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \ - && curl -o /tmp/oracle-instantclient18.3-basiclite-18.3.0.0.0-2.x86_64.rpm \ - https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/x86_64/getPackage/oracle-instantclient18.3-basiclite-18.3.0.0.0-2.x86_64.rpm \ - && curl -o /tmp/oracle-instantclient18.3-devel-18.3.0.0.0-2.x86_64.rpm \ - https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/x86_64/getPackage/oracle-instantclient18.3-devel-18.3.0.0.0-2.x86_64.rpm \ - && alien -i /tmp/oracle-instantclient18.3-basiclite-18.3.0.0.0-2.x86_64.rpm \ - && alien -i /tmp/oracle-instantclient18.3-devel-18.3.0.0.0-2.x86_64.rpm \ - && rm -f /tmp/oracle-instantclient18.3-basiclite-18.3.0.0.0-2.x86_64.rpm \ - && rm -f /tmp/oracle-instantclient18.3-devel-18.3.0.0.0-2.x86_64.rpm \ - && (ln -s /usr/lib/oracle/18.3/client64/lib/*.so* /usr/lib/ || true) \ - build_dep: [alien] - pdo_odbc: - disabled: "{{ php_all_versions }}" # TODO: Build errors - pdo_pgsql: - all: - type: builtin - build_dep: [libpq-dev] - run_dep: [libpq5] - pdo_sqlite: - already_avail: "{{ php_all_versions }}" - pdo_sqlsrv: - disabled: [5.2, 5.3, 5.4, 5.5, 5.6, 7.4, 8.0] - 7.0: - type: pecl - version: 5.3.0 - build_dep: [unixodbc-dev] - run_dep: [unixodbc] - all: - type: pecl - build_dep: [unixodbc-dev] - run_dep: [unixodbc] - pgsql: - all: - type: builtin - build_dep: [libpq-dev] - run_dep: [libpq5] - phalcon: - disabled: [5.2, 7.4, 8.0] - 5.3: - type: git - git_url: https://github.com/phalcon/cphalcon - git_ref: phalcon-v2.0.9 - command: cd build && ./install >/dev/null - 5.4: - type: git - git_url: https://github.com/phalcon/cphalcon - git_ref: phalcon-v2.0.13 - command: cd build && ./install - 5.5: - type: git - git_url: https://github.com/phalcon/cphalcon - git_ref: v3.4.2 - command: cd build && ./install - 5.6: - type: git - git_url: https://github.com/phalcon/cphalcon - git_ref: v3.4.2 - command: cd build && ./install - 7.0: - type: git - git_url: https://github.com/phalcon/cphalcon - git_ref: v3.4.2 - command: cd build && ./install - 7.1: - type: git - git_url: https://github.com/phalcon/cphalcon - git_ref: v3.4.2 - command: cd build && ./install - all: - type: git - git_url: https://github.com/phalcon/cphalcon - git_ref: $(git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname)' refs/tags | sort -n | sed 's/^.*tags\///g' | grep -E '^v[.0-9]+$' | tail -1) - command: cd build && ./install - phar: - already_avail: [5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4, 8.0] - 5.2: - type: pecl - build_dep: [libssl-dev] - posix: - already_avail: "{{ php_all_versions }}" - pspell: - all: - type: builtin - build_dep: [libpspell-dev] - run_dep: [libaspell15] - readline: - already_avail: "{{ php_all_versions }}" - recode: - already_avail: [5.3, 5.4] - all: - type: builtin - build_dep: [librecode-dev] - run_dep: [librecode0] - redis: - 5.2: - type: pecl - version: 2.2.7 - 7.4: - type: git - git_url: https://github.com/phpredis/phpredis - # This is a nasty work-around to fix current phpredis implementation for PHP 7.4 - command: | - phpize \ - && sed -i'' 's/ZEND_ACC_CTOR | //g' redis.c \ - && sed -i'' 's/ZEND_ACC_DTOR | //g' redis.c \ - && sed -i'' 's/ZEND_ACC_CTOR | //g' redis_cluster.c \ - && ./configure \ - && make -j$(getconf _NPROCESSORS_ONLN) \ - && make install \ - 8.0: - type: git - git_url: https://github.com/phpredis/phpredis - # This is a nasty work-around to fix current phpredis implementation for PHP 7.4 - command: | - phpize \ - && sed -i'' 's/ZEND_ACC_CTOR | //g' redis.c \ - && sed -i'' 's/ZEND_ACC_DTOR | //g' redis.c \ - && sed -i'' 's/ZEND_ACC_CTOR | //g' redis_cluster.c \ - && ./configure \ - && make -j$(getconf _NPROCESSORS_ONLN) \ - && make install \ - all: - type: pecl - reflection: - already_avail: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4, 8.0] - rdkafka: - disabled: [5.2, 8.0] - all: - type: pecl - build_dep: [librdkafka-dev] - run_dep: [librdkafka1] - session: - already_avail: "{{ php_all_versions }}" - shmop: - all: - type: builtin - simplexml: - already_avail: "{{ php_all_versions }}" - snmp: - all: - type: builtin - configure: --with-openssl-dir - build_dep: [libssl-dev, libsnmp-dev, snmp] - run_dep: [snmp] - soap: - already_avail: [5.2] - all: - type: builtin - configure: --with-libxml-dir=/usr - build_dep: [libxml2-dev] - sockets: - all: - type: builtin - sodium: - disabled: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1] - already_avail: [7.2, 7.3, 7.4] - all: - type: builtin - build_dep: [libsodium-dev] - spl: - already_avail: "{{ php_all_versions }}" - sqlsrv: - disabled: [5.2, 5.3, 5.4, 5.5, 5.6, 7.4, 8.0] - 7.0: - type: pecl - version: 5.3.0 - build_dep: [unixodbc-dev] - run_dep: [unixodbc] - all: - type: pecl - build_dep: [unixodbc-dev] - run_dep: [unixodbc] - swoole: - disabled: [5.2, 8.0] - 5.3: - type: pecl - version: 1.9.23 - run_dep: [libnghttp2-5] - 5.4: - type: pecl - version: 1.9.23 - run_dep: [libnghttp2-5] - 5.5: - type: pecl - version: 1.9.23 - run_dep: [libnghttp2-5] - 5.6: - type: pecl - version: 1.9.23 - 7.3: - type: git - git_url: https://github.com/swoole/swoole-src - git_ref: master - command: | - git checkout $(git describe --abbrev=0 --tags) \ - && phpize \ - && ./configure \ - --enable-openssl \ - --enable-sockets \ - --enable-http2 \ - --enable-mysqlnd \ - --enable-coroutine-postgresql \ - && make -j$(getconf _NPROCESSORS_ONLN) \ - && make install \ - run_dep: [libnghttp2-14, libhiredis0.13] - build_dep: [libnghttp2-dev, libssl-dev, libhiredis-dev, libpq-dev, cmake] - 7.4: - type: git - git_url: https://github.com/swoole/swoole-src - git_ref: master - command: | - git checkout $(git describe --abbrev=0 --tags) \ - && phpize \ - && ./configure \ - --enable-openssl \ - --enable-sockets \ - --enable-http2 \ - --enable-mysqlnd \ - --enable-coroutine-postgresql \ - && make -j$(getconf _NPROCESSORS_ONLN) \ - && make install \ - run_dep: [libnghttp2-14, libhiredis0.13] - build_dep: [libnghttp2-dev, libssl-dev, libhiredis-dev, libpq-dev, cmake] - all: - type: pecl - build_dep: [libnghttp2-dev, libssl-dev] - run_dep: [libnghttp2-14] - sysvmsg: - all: - type: builtin - sysvsem: - all: - type: builtin - sysvshm: - all: - type: builtin - tidy: - 5.2: - type: builtin - run_dep: [libtidy-0.99-0] - 5.3: - type: builtin - run_dep: [libtidy-0.99-0] - 5.4: - type: builtin - run_dep: [libtidy-0.99-0] - 5.5: - type: builtin - run_dep: [libtidy-0.99-0] - all: - type: builtin - build_dep: [libtidy-dev] - run_dep: [libtidy5] - tokenizer: - already_avail: "{{ php_all_versions }}" - uploadprogress: - 7.0: - type: git - git_url: https://github.com/php/pecl-php-uploadprogress - configure: --enable-uploadprogress - 7.1: - type: git - git_url: https://github.com/php/pecl-php-uploadprogress - configure: --enable-uploadprogress - 7.2: - type: git - git_url: https://github.com/php/pecl-php-uploadprogress - configure: --enable-uploadprogress - 7.3: - type: git - git_url: https://github.com/php/pecl-php-uploadprogress - configure: --enable-uploadprogress - 7.4: - type: git - git_url: https://github.com/php/pecl-php-uploadprogress - configure: --enable-uploadprogress - 8.0: - type: git - git_url: https://github.com/php/pecl-php-uploadprogress - configure: --enable-uploadprogress - all: - type: pecl - wddx: - all: - type: builtin - configure: --with-libxml-dir=/usr - build_dep: [libxml2-dev] - xdebug: - disabled: [7.4, 8.0] - 5.2: - type: pecl - version: 2.2.7 - 5.3: - type: pecl - version: 2.2.7 - 5.4: - type: pecl - version: 2.4.1 - 5.5: - type: pecl - version: 2.4.1 - 5.6: - type: pecl - version: 2.4.1 - all: - type: pecl - xml: - already_avail: "{{ php_all_versions }}" - xmlreader: - already_avail: "{{ php_all_versions }}" - xmlrpc: - all: - type: builtin - configure: --with-libxml-dir=/usr --with-iconv-dir=/usr - build_dep: [libxml2-dev] - xmlwriter: - already_avail: "{{ php_all_versions }}" - xsl: - all: - type: builtin - build_dep: [libxslt-dev] - run_dep: [libxslt1.1] - zip: - 5.2: - type: builtin - configure: --with-zlib-dir=/usr --with-pcre-dir=/usr - build_dep: [zlib1g-dev] - run_dep: [] - 5.3: - type: builtin - configure: --with-zlib-dir=/usr --with-pcre-dir=/usr - build_dep: [zlib1g-dev] - run_dep: [] - 5.4: - type: builtin - configure: --with-zlib-dir=/usr --with-pcre-dir=/usr - build_dep: [zlib1g-dev] - run_dep: [] - 5.5: - type: builtin - configure: --with-zlib-dir=/usr --with-pcre-dir=/usr - build_dep: [zlib1g-dev] - run_dep: [] - all: - type: builtin - configure: --with-zlib-dir=/usr --with-pcre-dir=/usr --with-libzip - build_dep: [zlib1g-dev, libzip-dev] - run_dep: [libzip4] diff --git a/build/ansible/group_vars/all/all-ansible.yml b/build/ansible/group_vars/all/all-ansible.yml new file mode 100644 index 0000000..fce9966 --- /dev/null +++ b/build/ansible/group_vars/all/all-ansible.yml @@ -0,0 +1,69 @@ +--- +################################################################################################### +# Ansible specifi definitions +################################################################################################### + + +# ------------------------------------------------------------------------------------------------- +# Adds version checks to Dockerfile +# ------------------------------------------------------------------------------------------------- +debug: True + + +# ------------------------------------------------------------------------------------------------- +# Available PHP versions (see inventory) +# ------------------------------------------------------------------------------------------------- +php_all_versions: + - 5.2 + - 5.3 + - 5.4 + - 5.5 + - 5.6 + - 7.0 + - 7.1 + - 7.2 + - 7.3 + - 7.4 + - 8.0 + + +# ------------------------------------------------------------------------------------------------- +# Docker file paths for each version for base, mods, prod & work +# ------------------------------------------------------------------------------------------------- +template_dockerfiles: + - src: DOCKERFILES/Dockerfile-base.j2 + dst: "../../Dockerfiles/base/Dockerfile-{{ php_version }}" + - src: DOCKERFILES/Dockerfile-mods.j2 + dst: "../../Dockerfiles/mods/Dockerfile-{{ php_version }}" + - src: DOCKERFILES/Dockerfile-prod.j2 + dst: "../../Dockerfiles/prod/Dockerfile-{{ php_version }}" + - src: DOCKERFILES/Dockerfile-work.j2 + dst: "../../Dockerfiles/work/Dockerfile-{{ php_version }}" + + +# ------------------------------------------------------------------------------------------------- +# Assign php.ini & php-fpm.conf to PHP versions +# ------------------------------------------------------------------------------------------------- +template_configurations: + # php.ini + - src: CONFIGURATIONS/php.ini.j2 + dst: "../../Dockerfiles/base/data/php-ini.d/php-{{ php_version }}.ini" + cfg: "{{ php_settings_ini }}" + key: base + alt: base + - src: CONFIGURATIONS/php.ini.j2 + dst: "../../Dockerfiles/work/data/php-ini.d/php-{{ php_version }}.ini" + cfg: "{{ php_settings_ini }}" + key: work + alt: base # Alternative key to use when definition is not set in 'work' + # php-fpm.conf + - src: CONFIGURATIONS/php-fpm.conf.j2 + dst: "../../Dockerfiles/base/data/php-fpm.conf/php-fpm-{{ php_version }}.conf" + cfg: "{{ php_settings_fpm }}" + key: base + alt: base + - src: CONFIGURATIONS/php-fpm.conf.j2 + dst: "../../Dockerfiles/work/data/php-fpm.conf/php-fpm-{{ php_version }}.conf" + cfg: "{{ php_settings_fpm }}" + key: work + alt: base diff --git a/build/ansible/group_vars/all/all-php-settings.yml b/build/ansible/group_vars/all/all-php-settings.yml new file mode 100644 index 0000000..04ed27f --- /dev/null +++ b/build/ansible/group_vars/all/all-php-settings.yml @@ -0,0 +1,106 @@ +--- +################################################################################################### +# PHP php.ini php-fpm.conf settings +################################################################################################### + + +# ------------------------------------------------------------------------------------------------- +# Global +# ------------------------------------------------------------------------------------------------- +php_timeout: 120 + + +# ------------------------------------------------------------------------------------------------- +# php.ini +# ------------------------------------------------------------------------------------------------- +php_settings_ini: + # ---- Sane default ---- + base: + # Memory + memory_limit: 512M + # Timeouts + max_execution_time: "{{ php_timeout }}" + max_input_time: "{{ php_timeout }}" + # Uploads + # Note: "post_max_size" should be greater than "upload_max_filesize" + post_max_size: 72M + upload_max_filesize: 64M + max_file_uploads: 20 + # Variables + variables_order: EGPCS + max_input_vars: 8000 + max_input_nesting_level: 64 + # Error reporting + error_reporting: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED + xmlrpc_errors: 'Off' + report_memleaks: 'On' + display_errors: 'Off' + display_startup_errors: 'Off' + track_errors: 'On' + log_errors: 'On' + html_errors: 'Off' + # Xdebug settings + xdebug_default_enable: 'Off' + xdebug_profiler_enable: 'Off' + xdebug_remote_enable: 'Off' + xdebug_remote_autostart: 'Off' + + # ---- Inherits from base ---- + mods: + # ---- Inherits from base ---- + prod: + # ---- Inherits from base and overwrites certain values ---- + work: + # Error reporting + error_reporting: E_ALL | E_NOTICE | E_STRICT | E_DEPRECATED + xmlrpc_errors: 'Off' + report_memleaks: 'On' + display_errors: 'On' + display_startup_errors: 'On' + track_errors: 'On' + log_errors: 'On' + html_errors: 'On' + # Xdebug settings + xdebug_default_enable: 'Off' + xdebug_profiler_enable: 'Off' + xdebug_remote_enable: 'Off' + xdebug_remote_autostart: 'Off' + + +# ------------------------------------------------------------------------------------------------- +# php-fpm.conf +# ------------------------------------------------------------------------------------------------- +php_settings_fpm: + # ---- Sane default ---- + base: + # Docker + clear_env: 'no' + catch_workers_output: 'yes' + # Timeouts + request_terminate_timeout: "{{ php_timeout }}s" + # Network + listen: 9000 + # Backlog + listen_backlog: 1024 + # Logging + log_level: notice + error_log: /proc/self/fd/2 + access_log: /proc/self/fd/2 + # Worker + pm: ondemand + pm_max_children: 50 # pm: dynamic, ondemand or static + pm_start_servers: 4 # only for pm: dynamic (min_spare + (max_spare-min_spare)/2 + pm_min_spare_servers: 2 # only for pm: dynamic + pm_max_spare_servers: 6 # only for pm: dynamic + pm_max_requests: 500 # pm: dynamic or ondemand + pm_process_idle_timeout: 10s # only for pm: ondemand + + # User/Group + user: devilbox + group: devilbox + # ---- Inherits from base ---- + mods: + # ---- Inherits from base ---- + prod: + # ---- Inherits from base and overwrites certain values ---- + work: diff --git a/build/ansible/group_vars/all/mods.yml b/build/ansible/group_vars/all/mods.yml new file mode 100644 index 0000000..59149df --- /dev/null +++ b/build/ansible/group_vars/all/mods.yml @@ -0,0 +1,958 @@ +--- +################################################################################################### +# Docker: mods +################################################################################################### + +# +# This file holds definition for all devibox/php-fpm:x.y-mods images +# + + +# ------------------------------------------------------------------------------------------------- +# Extensions to enable (in defined order) +# ------------------------------------------------------------------------------------------------- +extensions_enabled: + # ioncube must be loaded first + - ioncube + - amqp + - apcu + - bcmath + - blackfire + - bz2 + - calendar + - ctype + - curl + - dba + - dom + - enchant + - exif + - ffi + - fileinfo + - filter + - ftp + - gd + - gettext + - gmp + - hash + - iconv + - igbinary + - imagick + - imap + - interbase + - intl + - json + - ldap + - libxml + - mbstring + - mcrypt + - msgpack + - memcache + # requires igbinary and msgpack to be installed + - memcached + - mongo + - mongodb + - mysql + - mysqli + - mysqlnd + - oci8 + - odbc + - opcache + - openssl + - pcntl + - pcre + - pdo + - pdo_dblib + - pdo_firebird + - pdo_mysql + - pdo_oci + - pdo_odbc + - pdo_pgsql + - pdo_sqlite + - pdo_sqlsrv + - pgsql + - phalcon + - phar + - posix + - pspell + - readline + - recode + - redis + - reflection + - rdkafka + - session + - shmop + - simplexml + - snmp + - soap + - sockets + - sodium + - spl + - sqlsrv + - swoole + - sysvmsg + - sysvsem + - sysvshm + - tidy + - tokenizer + - uploadprogress + - wddx + - xdebug + - xml + - xmlreader + - xmlrpc + - xmlwriter + - xsl + - zip + + +# ------------------------------------------------------------------------------------------------- +# Extension definition +# ------------------------------------------------------------------------------------------------- + +# all: is generic version of defines +# 7.2: is specific version of defines +# disabled: [optional] Array of PHP versions for which to disable this module +# already_avail: [optional] Array of PHP versions for which we don't install the module, but +# the dependencies, as it is already loaded by core +# +# all, 7.2, 7.1, 7.0, 5.6, 5.5, 5.4: +# pre: [optional] Run command before anything else +# build_dep: [optional] Array of build dependencies +# run_dep: [optional] Array of run-time dependencies +# type: [required] One of 'builtin', 'pecl' or 'git' +# +# type: builtin +# configure: [optional] Add './configure' arguments +# type: pecl +# version: [optional] Pecl packet version +# command: [optional] Overwrite pecl command (pecl install ext) +# type: git +# git_url: [required] Git repository URL +# git_ref: [optional] Tag, branch, commit to checkout +# configure: [optional] Add './configure' arguments +# command: [optional] Overwrite default command (phpize && ./configure && make && make install) +# type: custom +# command: [required] Custom command to install and enable a module +extensions_available: + amqp: + disabled: [7.3, 7.4, 8.0] + 5.2: + run_dep: [librabbitmq1] + type: pecl + version: 1.4.0 + 5.3: + type: pecl + version: 1.9.3 + run_dep: [librabbitmq1] + 5.4: + type: pecl + version: 1.9.3 + run_dep: [librabbitmq1] + 5.5: + type: pecl + version: 1.9.3 + run_dep: [librabbitmq1] + all: + type: pecl + command: echo "/usr" | pecl install amqp + build_dep: [librabbitmq-dev] + run_dep: [librabbitmq4] + apcu: + disabled: [5.2, 7.4, 8.0] + 5.3: + type: pecl + version: 4.0.11 + 5.4: + type: pecl + version: 4.0.11 + 5.5: + type: pecl + version: 4.0.11 + 5.6: + type: pecl + version: 4.0.11 + all: + type: pecl + bcmath: + all: + type: builtin + blackfire: + disabled: [5.2, 5.3, 5.4, 5.5, 7.4, 8.0] + all: + type: custom + command: | + version=$(php -r "echo PHP_MAJOR_VERSION.PHP_MINOR_VERSION;") \ + && curl -A "Docker" -o /tmp/blackfire-probe.tar.gz -D - -L -s https://blackfire.io/api/v1/releases/probe/php/linux/amd64/$version \ + && mkdir -p /tmp/blackfire \ + && tar zxpf /tmp/blackfire-probe.tar.gz -C /tmp/blackfire \ + && mv /tmp/blackfire/blackfire-*.so $(php -r "echo ini_get('extension_dir');")/blackfire.so \ + && rm -rf /tmp/blackfire /tmp/blackfire-probe.tar.gz \ + bz2: + all: + type: builtin + build_dep: [libbz2-dev] + calendar: + all: + type: builtin + ctype: + already_avail: "{{ php_all_versions }}" + curl: + already_avail: "{{ php_all_versions }}" + dba: + all: + type: builtin + dom: + already_avail: "{{ php_all_versions }}" + enchant: + 5.2: + type: pecl + command: echo "/usr" | pecl install enchant + all: + type: builtin + build_dep: [libenchant-dev] + run_dep: [libenchant1c2a] + exif: + all: + type: builtin + ffi: + disabled: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3] + all: + type: git + git_url: https://github.com/dstogov/php-ffi + command: | + phpize \ + && ./configure --with-ffi \ + && make -j$(getconf _NPROCESSORS_ONLN) \ + && make install \ + build_dep: [libffi-dev] + run_dep: [libffi6] + fileinfo: + already_avail: [5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4, 8.0] + 5.2: + type: pecl + build_dep: [libmagic-dev] + all: + type: builtin + filter: + already_avail: "{{ php_all_versions }}" # Available by default + ftp: + already_avail: [5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4, 8.0] + all: + type: builtin + configure: --with-openssl-dir + build_dep: [libssl-dev] + gd: + 5.2: + type: builtin + pre: | + ln -s /usr/lib/x86_64-linux-gnu/libjpeg.* /usr/lib/ && \ + ln -s /usr/lib/x86_64-linux-gnu/libpng.* /usr/lib/ && \ + ln -s /usr/lib/x86_64-linux-gnu/libXpm.* /usr/lib/ && \ + mkdir /usr/include/freetype2/freetype && \ + ln -s /usr/include/freetype2/freetype.h /usr/include/freetype2/freetype/freetype.h \ + configure: --with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-jis-conv --enable-gd-native-ttf + build_dep: [libpng-dev, libjpeg-dev, libxpm-dev, libvpx-dev, zlib1g-dev, libfreetype6-dev] + run_dep: [libpng12-0, libjpeg62-turbo, libxpm4, libvpx1, libfreetype6] + 5.3: + type: builtin + pre: ln -s /usr/lib/x86_64-linux-gnu/libXpm.* /usr/lib/ && mkdir /usr/include/freetype2/freetype && ln -s /usr/include/freetype2/freetype.h /usr/include/freetype2/freetype/freetype.h + configure: --with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-jis-conv --enable-gd-native-ttf + build_dep: [libpng-dev, libjpeg-dev, libxpm-dev, libvpx-dev, zlib1g-dev, libfreetype6-dev] + run_dep: [libpng12-0, libjpeg62-turbo, libxpm4, libvpx1, libfreetype6] + 5.4: + type: builtin + pre: ln -s /usr/lib/x86_64-linux-gnu/libXpm.* /usr/lib/ + configure: --with-gd --with-vpx-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-jis-conv --enable-gd-native-ttf + build_dep: [libpng-dev, libjpeg-dev, libxpm-dev, libvpx-dev, zlib1g-dev, libfreetype6-dev] + run_dep: [libpng12-0, libjpeg62-turbo, libxpm4, libvpx1, libfreetype6] + 5.5: + type: builtin + pre: ln -s /usr/lib/x86_64-linux-gnu/libXpm.* /usr/lib/ + configure: --with-gd --with-vpx-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-jis-conv --enable-gd-native-ttf + build_dep: [libpng-dev, libjpeg-dev, libxpm-dev, libvpx-dev, zlib1g-dev, libfreetype6-dev] + run_dep: [libpng12-0, libjpeg62-turbo, libxpm4, libvpx1, libfreetype6] + 5.6: + type: builtin + pre: ln -s /usr/lib/x86_64-linux-gnu/libXpm.* /usr/lib/ + configure: --with-gd --with-vpx-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-jis-conv --enable-gd-native-ttf + 7.0: + type: builtin + configure: --with-gd --with-webp-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-jis-conv --enable-gd-native-ttf + 7.1: + type: builtin + configure: --with-gd --with-webp-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-jis-conv --enable-gd-native-ttf + 7.2: + type: builtin + configure: --with-gd --with-webp-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-jis-conv + 7.3: + type: builtin + configure: --with-gd --with-webp-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-jis-conv + 7.4: + type: builtin + configure: --with-gd --with-webp-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-jis-conv + 8.0: + type: builtin + configure: --with-gd --with-webp-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-jis-conv + all: + type: builtin + pre: ln -s /usr/lib/x86_64-linux-gnu/libXpm.* /usr/lib/ + configure: --with-gd --with-vpx-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-jis-conv --enable-gd-native-ttf + build_dep: [libpng-dev, libjpeg-dev, libxpm-dev, libvpx-dev, zlib1g-dev, libfreetype6-dev, libwebp-dev] + run_dep: [libpng16-16, libjpeg62-turbo, libxpm4, libvpx4, libfreetype6, libwebp6] + gettext: + all: + type: builtin + gmp: + disabled: [5.2] + all: + type: builtin + pre: ln /usr/include/x86_64-linux-gnu/gmp.h /usr/include/ + build_dep: [libgmp-dev] + hash: + already_avail: "{{ php_all_versions }}" + iconv: + already_avail: "{{ php_all_versions }}" + igbinary: + disabled: [8.0] + 5.2: + type: pecl + version: 2.0.7 + 5.3: + type: pecl + version: 2.0.8 + 5.4: + type: pecl + version: 2.0.8 + 5.5: + type: pecl + version: 2.0.8 + 5.6: + type: pecl + version: 2.0.8 + all: + type: pecl + imagick: + disabled: [5.2, 7.4, 8.0] + 5.3: + type: pecl + version: 3.3.0 + run_dep: [libmagickwand-6.q16-2] + 5.4: + type: pecl + run_dep: [libmagickwand-6.q16-2] + 5.5: + type: pecl + run_dep: [libmagickwand-6.q16-2] + all: + type: pecl + build_dep: [libmagickwand-dev] + run_dep: [libmagickwand-6.q16-3] + imap: + disabled: [7.4, 8.0] # TODO: re-enable. currently fails with: configure: error: OpenSSL libraries not found. + all: + type: builtin + pre: ln -s /usr/lib/x86_64-linux-gnu/libkrb5* /usr/lib/ + configure: --with-kerberos --with-imap-ssl --with-imap + build_dep: [libc-client-dev, libkrb5-dev, libcurl4-openssl-dev] + run_dep: [libc-client2007e] + interbase: + all: + type: builtin + build_dep: [libfbclient2, libib-util, firebird-dev] + run_dep: [libfbclient2] + intl: + 5.2: + type: pecl + run_dep: [libicu52] + 5.3: + type: builtin + run_dep: [libicu52] + 5.4: + type: builtin + run_dep: [libicu52] + 5.5: + type: builtin + run_dep: [libicu52] + all: + type: builtin + build_dep: [libicu-dev] + run_dep: [libicu57] + ioncube: + disabled: [7.3, 7.4, 8.0] + all: + type: custom + command: | + EXTENSION_DIR="$( php -i | grep ^extension_dir | awk -F '=>' '{print $2}' | xargs )" \ + && if [ ! -d "${EXTENSION_DIR}" ]; then mkdir -p "${EXTENSION_DIR}"; fi \ + && curl https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz -L -o ioncube.tar.gz \ + && tar xvfz ioncube.tar.gz \ + && cd ioncube \ + && cp "ioncube_loader_lin_{{ php_version }}.so" "${EXTENSION_DIR}/ioncube.so" \ + && cd ../ \ + && rm -rf ioncube \ + && rm -rf ioncube.tar.gz \ + json: + already_avail: "{{ php_all_versions }}" + ldap: + all: + type: builtin + pre: ln -s /usr/lib/x86_64-linux-gnu/libldap* /usr/lib/ + configure: --with-ldap --with-ldap-sasl + build_dep: [libldap2-dev, libsasl2-dev] + libxml: + already_avail: "{{ php_all_versions }}" # Available by default + mbstring: + already_avail: [5.2, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4, 8.0] + all: + type: builtin + mcrypt: + disabled: [7.4, 8.0] + 7.2: + type: pecl + version: 1.0.1 + 7.3: + type: pecl + version: 1.0.2 + all: + type: builtin + run_dep: [libmcrypt4] + build_dep: [libmcrypt-dev] + memcache: + disabled: [7.3, 7.4, 8.0] + 7.0: + type: git + git_url: https://github.com/websupport-sk/pecl-memcache + git_ref: origin/php7 + configure: --with-zlib-dir=/usr + 7.1: + type: git + git_url: https://github.com/websupport-sk/pecl-memcache + git_ref: origin/php7 + configure: --with-zlib-dir=/usr + 7.2: + type: git + git_url: https://github.com/websupport-sk/pecl-memcache + git_ref: origin/php7 + configure: --with-zlib-dir=/usr + all: + type: pecl + build_dep: [zlib1g-dev] + memcached: + 5.2: + type: pecl + version: 2.1.0 + 5.3: + type: pecl + version: 2.2.0 + 5.4: + type: pecl + version: 2.2.0 + 5.5: + type: pecl + version: 2.2.0 + 5.6: + type: pecl + version: 2.2.0 + 7.4: + type: git + git_url: https://github.com/php-memcached-dev/php-memcached + git_ref: master + command: phpize && ./configure --enable-memcached && make -j$(getconf _NPROCESSORS_ONLN) && make install + 8.0: + type: git + git_url: https://github.com/php-memcached-dev/php-memcached + git_ref: master + command: phpize && ./configure --enable-memcached && make -j$(getconf _NPROCESSORS_ONLN) && make install + all: + type: pecl + #version: 3.0.4 # TODO: check if this version works + build_dep: [zlib1g-dev, libmemcached-dev, libevent-dev] + run_dep: [libmemcachedutil2] + mongo: + disabled: [7.0, 7.1, 7.2, 7.3, 7.4, 8.0] # Deprecated + 5.2: + type: pecl + command: yes | pecl install mongo-1.5.8 + all: + type: pecl + command: yes | pecl install mongo + build_dep: [libssl-dev, libsasl2-dev] + mongodb: + disabled: [5.2] + 5.3: + type: pecl + version: 0.6.3 + 5.4: + type: pecl + version: 1.2.11 + 8.0: + type: git + git_url: https://github.com/mongodb/mongo-php-driver + command: | + git submodule update --init \ + && phpize \ + && ./configure --enable-mongodb \ + && make all \ + && make install \ + all: + type: pecl + build_dep: [libssl-dev, libsasl2-dev] + msgpack: + disabled: [7.4, 8.0] + 5.2: + type: pecl + version: 0.5.7 + 5.3: + type: pecl + version: 0.5.7 + 5.4: + type: pecl + version: 0.5.7 + 5.5: + type: pecl + version: 0.5.7 + 5.6: + type: pecl + version: 0.5.7 + all: + type: pecl + mysql: + already_avail: [5.2, 5.3] + disabled: [7.0, 7.1, 7.2, 7.3, 7.4, 8.0] # Deprecated in newer versions + 5.6: + type: builtin + run_dep: [libmariadbclient18] + all: + type: builtin + run_dep: [libmysqlclient18] + mysqli: + already_avail: [5.2] + all: + type: builtin + mysqlnd: + disabled: [5.2] + already_avail: [5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4, 8.0] + oci8: + disabled: [5.2] + all: + type: builtin + configure: --with-oci8=instantclient,/usr/lib/oracle/18.3/client64/lib/,18.3 + pre: | + rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \ + && curl -o /tmp/oracle-instantclient18.3-basiclite-18.3.0.0.0-2.x86_64.rpm \ + https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/x86_64/getPackage/oracle-instantclient18.3-basiclite-18.3.0.0.0-2.x86_64.rpm \ + && curl -o /tmp/oracle-instantclient18.3-devel-18.3.0.0.0-2.x86_64.rpm \ + https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/x86_64/getPackage/oracle-instantclient18.3-devel-18.3.0.0.0-2.x86_64.rpm \ + && alien -i /tmp/oracle-instantclient18.3-basiclite-18.3.0.0.0-2.x86_64.rpm \ + && alien -i /tmp/oracle-instantclient18.3-devel-18.3.0.0.0-2.x86_64.rpm \ + && rm -f /tmp/oracle-instantclient18.3-basiclite-18.3.0.0.0-2.x86_64.rpm \ + && rm -f /tmp/oracle-instantclient18.3-devel-18.3.0.0.0-2.x86_64.rpm \ + && (ln -s /usr/lib/oracle/18.3/client64/lib/*.so* /usr/lib/ || true) \ + build_dep: [alien, libaio-dev] + run_dep: [libaio1] + odbc: + disabled: "{{ php_all_versions }}" # TODO: sqlext.h' not found! + opcache: + 5.2: + type: pecl + command: pecl install zendopcache + 5.3: + type: pecl + command: pecl install zendopcache + 5.4: + type: pecl + command: pecl install zendopcache + all: + type: builtin + openssl: + already_avail: "{{ php_all_versions }}" + pcntl: + all: + type: builtin + pcre: + already_avail: "{{ php_all_versions }}" + pdo: + already_avail: "{{ php_all_versions }}" + pdo_dblib: + all: + type: builtin + pre: ln -s /usr/lib/x86_64-linux-gnu/libsybdb.* /usr/lib/ + build_dep: [freetds-dev] + run_dep: [libsybdb5] + pdo_firebird: + all: + type: builtin + build_dep: [libfbclient2, libib-util, firebird-dev] + run_dep: [libfbclient2] + pdo_mysql: + already_avail: [5.2] + all: + type: builtin + configure: --with-zlib-dir=/usr + build_dep: [zlib1g-dev] + pdo_oci: + disabled: [5.2, 5.3, 5.4, 5.5, 5.6] + 8.0: + type: builtin + configure: --with-pdo-oci=instantclient,/usr/lib/oracle/18.3/client64/lib/,18.3 + 7.4: + type: builtin + configure: --with-pdo-oci=instantclient,/usr/lib/oracle/18.3/client64/lib/,18.3 + 7.3: + type: builtin + configure: --with-pdo-oci=instantclient,/usr/lib/oracle/18.3/client64/lib/,18.3 + 7.2: + type: builtin + configure: --with-pdo-oci=instantclient,/usr/lib/oracle/18.3/client64/lib/,18.3 + all: + type: builtin + configure: --with-pdo-oci=instantclient,/usr,18.3 + pre: | + rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \ + && curl -o /tmp/oracle-instantclient18.3-basiclite-18.3.0.0.0-2.x86_64.rpm \ + https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/x86_64/getPackage/oracle-instantclient18.3-basiclite-18.3.0.0.0-2.x86_64.rpm \ + && curl -o /tmp/oracle-instantclient18.3-devel-18.3.0.0.0-2.x86_64.rpm \ + https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/x86_64/getPackage/oracle-instantclient18.3-devel-18.3.0.0.0-2.x86_64.rpm \ + && alien -i /tmp/oracle-instantclient18.3-basiclite-18.3.0.0.0-2.x86_64.rpm \ + && alien -i /tmp/oracle-instantclient18.3-devel-18.3.0.0.0-2.x86_64.rpm \ + && rm -f /tmp/oracle-instantclient18.3-basiclite-18.3.0.0.0-2.x86_64.rpm \ + && rm -f /tmp/oracle-instantclient18.3-devel-18.3.0.0.0-2.x86_64.rpm \ + && (ln -s /usr/lib/oracle/18.3/client64/lib/*.so* /usr/lib/ || true) \ + build_dep: [alien] + pdo_odbc: + disabled: "{{ php_all_versions }}" # TODO: Build errors + pdo_pgsql: + all: + type: builtin + build_dep: [libpq-dev] + run_dep: [libpq5] + pdo_sqlite: + already_avail: "{{ php_all_versions }}" + pdo_sqlsrv: + disabled: [5.2, 5.3, 5.4, 5.5, 5.6, 7.4, 8.0] + 7.0: + type: pecl + version: 5.3.0 + build_dep: [unixodbc-dev] + run_dep: [unixodbc] + all: + type: pecl + build_dep: [unixodbc-dev] + run_dep: [unixodbc] + pgsql: + all: + type: builtin + build_dep: [libpq-dev] + run_dep: [libpq5] + phalcon: + disabled: [5.2, 7.4, 8.0] + 5.3: + type: git + git_url: https://github.com/phalcon/cphalcon + git_ref: phalcon-v2.0.9 + command: cd build && ./install >/dev/null + 5.4: + type: git + git_url: https://github.com/phalcon/cphalcon + git_ref: phalcon-v2.0.13 + command: cd build && ./install + 5.5: + type: git + git_url: https://github.com/phalcon/cphalcon + git_ref: v3.4.2 + command: cd build && ./install + 5.6: + type: git + git_url: https://github.com/phalcon/cphalcon + git_ref: v3.4.2 + command: cd build && ./install + 7.0: + type: git + git_url: https://github.com/phalcon/cphalcon + git_ref: v3.4.2 + command: cd build && ./install + 7.1: + type: git + git_url: https://github.com/phalcon/cphalcon + git_ref: v3.4.2 + command: cd build && ./install + all: + type: git + git_url: https://github.com/phalcon/cphalcon + git_ref: $(git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname)' refs/tags | sort -n | sed 's/^.*tags\///g' | grep -E '^v[.0-9]+$' | tail -1) + command: cd build && ./install + phar: + already_avail: [5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4, 8.0] + 5.2: + type: pecl + build_dep: [libssl-dev] + posix: + already_avail: "{{ php_all_versions }}" + pspell: + all: + type: builtin + build_dep: [libpspell-dev] + run_dep: [libaspell15] + readline: + already_avail: "{{ php_all_versions }}" + recode: + already_avail: [5.3, 5.4] + all: + type: builtin + build_dep: [librecode-dev] + run_dep: [librecode0] + redis: + 5.2: + type: pecl + version: 2.2.7 + 7.4: + type: git + git_url: https://github.com/phpredis/phpredis + # This is a nasty work-around to fix current phpredis implementation for PHP 7.4 + command: | + phpize \ + && sed -i'' 's/ZEND_ACC_CTOR | //g' redis.c \ + && sed -i'' 's/ZEND_ACC_DTOR | //g' redis.c \ + && sed -i'' 's/ZEND_ACC_CTOR | //g' redis_cluster.c \ + && ./configure \ + && make -j$(getconf _NPROCESSORS_ONLN) \ + && make install \ + 8.0: + type: git + git_url: https://github.com/phpredis/phpredis + # This is a nasty work-around to fix current phpredis implementation for PHP 7.4 + command: | + phpize \ + && sed -i'' 's/ZEND_ACC_CTOR | //g' redis.c \ + && sed -i'' 's/ZEND_ACC_DTOR | //g' redis.c \ + && sed -i'' 's/ZEND_ACC_CTOR | //g' redis_cluster.c \ + && ./configure \ + && make -j$(getconf _NPROCESSORS_ONLN) \ + && make install \ + all: + type: pecl + reflection: + already_avail: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4, 8.0] + rdkafka: + disabled: [5.2, 8.0] + all: + type: pecl + build_dep: [librdkafka-dev] + run_dep: [librdkafka1] + session: + already_avail: "{{ php_all_versions }}" + shmop: + all: + type: builtin + simplexml: + already_avail: "{{ php_all_versions }}" + snmp: + all: + type: builtin + configure: --with-openssl-dir + build_dep: [libssl-dev, libsnmp-dev, snmp] + run_dep: [snmp] + soap: + already_avail: [5.2] + all: + type: builtin + configure: --with-libxml-dir=/usr + build_dep: [libxml2-dev] + sockets: + all: + type: builtin + sodium: + disabled: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1] + already_avail: [7.2, 7.3, 7.4] + all: + type: builtin + build_dep: [libsodium-dev] + spl: + already_avail: "{{ php_all_versions }}" + sqlsrv: + disabled: [5.2, 5.3, 5.4, 5.5, 5.6, 7.4, 8.0] + 7.0: + type: pecl + version: 5.3.0 + build_dep: [unixodbc-dev] + run_dep: [unixodbc] + all: + type: pecl + build_dep: [unixodbc-dev] + run_dep: [unixodbc] + swoole: + disabled: [5.2, 8.0] + 5.3: + type: pecl + version: 1.9.23 + run_dep: [libnghttp2-5] + 5.4: + type: pecl + version: 1.9.23 + run_dep: [libnghttp2-5] + 5.5: + type: pecl + version: 1.9.23 + run_dep: [libnghttp2-5] + 5.6: + type: pecl + version: 1.9.23 + 7.3: + type: git + git_url: https://github.com/swoole/swoole-src + git_ref: master + command: | + git checkout $(git describe --abbrev=0 --tags) \ + && phpize \ + && ./configure \ + --enable-openssl \ + --enable-sockets \ + --enable-http2 \ + --enable-mysqlnd \ + --enable-coroutine-postgresql \ + && make -j$(getconf _NPROCESSORS_ONLN) \ + && make install \ + run_dep: [libnghttp2-14, libhiredis0.13] + build_dep: [libnghttp2-dev, libssl-dev, libhiredis-dev, libpq-dev, cmake] + 7.4: + type: git + git_url: https://github.com/swoole/swoole-src + git_ref: master + command: | + git checkout $(git describe --abbrev=0 --tags) \ + && phpize \ + && ./configure \ + --enable-openssl \ + --enable-sockets \ + --enable-http2 \ + --enable-mysqlnd \ + --enable-coroutine-postgresql \ + && make -j$(getconf _NPROCESSORS_ONLN) \ + && make install \ + run_dep: [libnghttp2-14, libhiredis0.13] + build_dep: [libnghttp2-dev, libssl-dev, libhiredis-dev, libpq-dev, cmake] + all: + type: pecl + build_dep: [libnghttp2-dev, libssl-dev] + run_dep: [libnghttp2-14] + sysvmsg: + all: + type: builtin + sysvsem: + all: + type: builtin + sysvshm: + all: + type: builtin + tidy: + 5.2: + type: builtin + run_dep: [libtidy-0.99-0] + 5.3: + type: builtin + run_dep: [libtidy-0.99-0] + 5.4: + type: builtin + run_dep: [libtidy-0.99-0] + 5.5: + type: builtin + run_dep: [libtidy-0.99-0] + all: + type: builtin + build_dep: [libtidy-dev] + run_dep: [libtidy5] + tokenizer: + already_avail: "{{ php_all_versions }}" + uploadprogress: + 7.0: + type: git + git_url: https://github.com/php/pecl-php-uploadprogress + configure: --enable-uploadprogress + 7.1: + type: git + git_url: https://github.com/php/pecl-php-uploadprogress + configure: --enable-uploadprogress + 7.2: + type: git + git_url: https://github.com/php/pecl-php-uploadprogress + configure: --enable-uploadprogress + 7.3: + type: git + git_url: https://github.com/php/pecl-php-uploadprogress + configure: --enable-uploadprogress + 7.4: + type: git + git_url: https://github.com/php/pecl-php-uploadprogress + configure: --enable-uploadprogress + 8.0: + type: git + git_url: https://github.com/php/pecl-php-uploadprogress + configure: --enable-uploadprogress + all: + type: pecl + wddx: + all: + type: builtin + configure: --with-libxml-dir=/usr + build_dep: [libxml2-dev] + xdebug: + disabled: [7.4, 8.0] + 5.2: + type: pecl + version: 2.2.7 + 5.3: + type: pecl + version: 2.2.7 + 5.4: + type: pecl + version: 2.4.1 + 5.5: + type: pecl + version: 2.4.1 + 5.6: + type: pecl + version: 2.4.1 + all: + type: pecl + xml: + already_avail: "{{ php_all_versions }}" + xmlreader: + already_avail: "{{ php_all_versions }}" + xmlrpc: + all: + type: builtin + configure: --with-libxml-dir=/usr --with-iconv-dir=/usr + build_dep: [libxml2-dev] + xmlwriter: + already_avail: "{{ php_all_versions }}" + xsl: + all: + type: builtin + build_dep: [libxslt-dev] + run_dep: [libxslt1.1] + zip: + 5.2: + type: builtin + configure: --with-zlib-dir=/usr --with-pcre-dir=/usr + build_dep: [zlib1g-dev] + run_dep: [] + 5.3: + type: builtin + configure: --with-zlib-dir=/usr --with-pcre-dir=/usr + build_dep: [zlib1g-dev] + run_dep: [] + 5.4: + type: builtin + configure: --with-zlib-dir=/usr --with-pcre-dir=/usr + build_dep: [zlib1g-dev] + run_dep: [] + 5.5: + type: builtin + configure: --with-zlib-dir=/usr --with-pcre-dir=/usr + build_dep: [zlib1g-dev] + run_dep: [] + all: + type: builtin + configure: --with-zlib-dir=/usr --with-pcre-dir=/usr --with-libzip + build_dep: [zlib1g-dev, libzip-dev] + run_dep: [libzip4] diff --git a/build/ansible/group_vars/all/work.yml b/build/ansible/group_vars/all/work.yml new file mode 100644 index 0000000..b4561c3 --- /dev/null +++ b/build/ansible/group_vars/all/work.yml @@ -0,0 +1,656 @@ +--- +################################################################################################### +# Docker: work +################################################################################################### + +# +# This file holds definition for all devibox/php-fpm:x.y-work images +# + + +# ------------------------------------------------------------------------------------------------- +# Global variables +# ------------------------------------------------------------------------------------------------- +compose_home: /usr/local/src/composer +nvm_home: /usr/local/src/nvm + + +# ------------------------------------------------------------------------------------------------- +# Apt repositories to enable (in defined order) +# ------------------------------------------------------------------------------------------------- +apt_repositories_enabled: + - backports + - blackfire + - git + - mongo + - pgsql + - yarn + + +# ------------------------------------------------------------------------------------------------- +# Ruby gem packages to install +# ------------------------------------------------------------------------------------------------- +gem_enabled: + - mixlib_config + - rb_inotify + - mdl + - scss_lint + - sass + + +# ------------------------------------------------------------------------------------------------- +# Node npm packages to install +# ------------------------------------------------------------------------------------------------- +npm_enabled: + - eslint + - grunt + - grunt_cli + - gulp + - jsonlint + # https://github.com/Unitech/pm2 + - pm2 + - mdlint + - webpack + - webpack_cli + + +# ------------------------------------------------------------------------------------------------- +# Python pip packages to install +# ------------------------------------------------------------------------------------------------- +pip_enabled: + - ansible + - yamllint + + +# ------------------------------------------------------------------------------------------------- +# Software to install (in defined order) +# ------------------------------------------------------------------------------------------------- +software_enabled: + # Composer, pip and nvm need to be first, others rely on it + - composer + - pip + - nvm + # Normal packages start here + - asgardcms + - awesomeci + - codeception + - deployer + - drush7 + - drush8 + - drush9 + - drupalconsole + - gitflow + - laravel + - linkcheck + - linuxbrew + - mhsendmail + - mysqldumpsecure + - phalcon + - phpcs + - phpcbf + - php-cs-fixer + - phpunit + - photon + - symfony + - wkhtmltopdf + - wpcli + # Cleanup needs to be last + - cleanup + + +# ------------------------------------------------------------------------------------------------- +# Apt repository definition +# ------------------------------------------------------------------------------------------------- + +# all: is generic version of defines +# 7.2: is specific version of defines +# disabled: [optional] Array of PHP versions for which to disable this module +# +# all, 7.2, 7.1, 7.0, 5.6, 5.5, 5.4: +# deb: Deb line to add to sources list +# key: [optional] Key id to add for repository +# pre: [optional] Run custom command to add gpg key for repository +# +apt_repositories_available: + backports: + all: + deb: deb http://ftp.debian.org/debian jessie-backports main + blackfire: + all: + deb: deb http://packages.blackfire.io/debian any main + pre: curl -sS "https://packages.blackfire.io/gpg.key" 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - + git: + 7.2: + deb: deb http://ppa.launchpad.net/git-core/ppa/ubuntu artful main + 7.3: + deb: deb http://ppa.launchpad.net/git-core/ppa/ubuntu artful main + 7.4: + deb: deb http://ppa.launchpad.net/git-core/ppa/ubuntu artful main + 8.0: + deb: deb http://ppa.launchpad.net/git-core/ppa/ubuntu artful main + all: + deb: deb http://ppa.launchpad.net/git-core/ppa/ubuntu wily main + key: A1715D88E1DF1F24 + mongo: + all: + deb: deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.6 main + key: 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5 + pgsql: + 7.2: + deb: deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main + 7.3: + deb: deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main + 7.4: + deb: deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main + 8.0: + deb: deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main + all: + deb: deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main + pre: curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - + yarn: + all: + deb: deb http://dl.yarnpkg.com/debian/ stable main + pre: curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - + + +# ------------------------------------------------------------------------------------------------- +# Python pip definition +# ------------------------------------------------------------------------------------------------- + +# name: Name of the Python pip package +# all: is generic version of defines +# 7.2: is specific version of defines +# disabled: [optional] Array of PHP versions for which to disable this module +# check: [optional] Include a check command to test if it was installed successfully +# +# all, 7.2, 7.1, 7.0, 5.6, 5.5, 5.4: +# version: [optional] Specific version of Python pip package +# +pip_available: + ansible: + name: ansible + check: ansible --version | grep -E '^ansible [.0-9]+$' + yamllint: + name: yamllint + check: yamllint --version 2>&1 | grep -E '[.0-9]+' + + +# ------------------------------------------------------------------------------------------------- +# Node npm definition +# ------------------------------------------------------------------------------------------------- + +# name: Name of the Node npm package +# all: is generic version of defines +# 7.2: is specific version of defines +# disabled: [optional] Array of PHP versions for which to disable this module +# check: [optional] Include a check command to test if it was installed successfully +# +# all, 7.2, 7.1, 7.0, 5.6, 5.5, 5.4: +# version: [optional] Specific version of Node npm package +# +npm_available: + eslint: + name: eslint + check: eslint -v | grep -E '[.0-9]+' + grunt: + name: grunt + grunt_cli: + name: grunt-cli + check: grunt --version | grep -E '[.0-9]+' + gulp: + name: gulp + check: gulp --version | grep -E '[.0-9]+' + jsonlint: + name: jsonlint + check: jsonlint --version | grep -E '[.0-9]+' + pm2: + name: pm2 + check: pm2 --no-daemon --version | grep -E '[.0-9]+' + mdlint: + name: mdlint + check: mdlint --version | grep -E '[.0-9]+' + webpack: + name: webpack + webpack_cli: + name: webpack-cli + check: webpack --version | grep -E '[.0-9]+' + + +# ------------------------------------------------------------------------------------------------- +# Ruby Gems definition +# ------------------------------------------------------------------------------------------------- + +# name: Name of the Ruby gem package +# all: is generic version of defines +# 7.2: is specific version of defines +# disabled: [optional] Array of PHP versions for which to disable this module +# check: [optional] Include a check command to test if it was installed successfully +# +# all, 7.2, 7.1, 7.0, 5.6, 5.5, 5.4: +# version: [optional] Specific version of Ruby gem +# +gem_available: + mixlib_config: + name: mixlib-config + all: + version: 2.2.4 + rb_inotify: + name: rb-inotify + all: + version: 0.9.10 + mdl: + name: mdl + check: mdl --version | grep -E '[.0-9]+' + scss_lint: + name: scss_lint + sass: + name: sass + check: sass --version | grep -E '[.0-9]+' + + +# ------------------------------------------------------------------------------------------------- +# Software definition +# ------------------------------------------------------------------------------------------------- + +# all: is generic version of defines +# 7.2: is specific version of defines +# disabled: [optional] Array of PHP versions for which to disable this module +# check: [optional] Include a check command to test if it was installed successfully +# +# all, 7.2, 7.1, 7.0, 5.6, 5.5, 5.4: +# pre: [optional] Run command before 'command:' statement +# command: Command to execute +# pre: [optional] Run command after 'command:' statement +# +software_available: + # Composer is a dependency for others + composer: + disabled: [5.2] + check: composer --version 2>/dev/null | grep -E 'version\s*[.0-9]+' + all: + command: curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer + # pip is a dependency for others + pip: + all: + command: | + DEBIAN_FRONTEND=noninteractive apt-get update -qq \ + && DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ + libpython-dev \ + && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ + && rm -rf /var/lib/apt/lists/* \ + \ + && curl -sS https://bootstrap.pypa.io/get-pip.py | python \ + # nvm is a dependency for others + nvm: + check: su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[.0-9]+' + all: + pre: | + git clone https://github.com/creationix/nvm /opt/nvm \ + && cd /opt/nvm \ + && git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ + \ + && { \ + echo 'export NVM_DIR="/opt/nvm"'; \ + echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm'; \ + echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ + } >> /home/devilbox/.bashrc \ + \ + && chown -R devilbox:devilbox /opt/nvm \ + # Install latest and LTS version + command: | + su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ + asgardcms: + disabled: [5.2, 5.3, 5.4, 8.0] + check: asgardcms --version 2>/dev/null | grep -Ei 'AsgardCMS\sInstaller\s[.0-9]+' + all: + command: | + COMPOSER_HOME="{{ compose_home }}" composer global require asgardcms/asgardcms-installer \ + && ln -s {{ compose_home }}/vendor/asgardcms/asgardcms-installer/asgardcms /usr/local/bin/asgardcms \ + awesomeci: + check: | + mdl --version | grep -E '[.0-9]+' \ + && scss-lint --version | grep -E '[.0-9]+' \ + && eslint -v | grep -E '[.0-9]+' \ + && jsonlint --version | grep -E '[.0-9]+' \ + && mdlint --version | grep -E '[.0-9]+' \ + && gulp --version | grep -E '[.0-9]+' \ + all: + command: | + git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \ + && cd /usr/local/src/awesome-ci \ + && git checkout $(git describe --abbrev=0 --tags) \ + && ./configure --prefix=/usr/local \ + && make install \ + && cd / \ + && rm -rf /usr/local/src/awesome-ci \ + deployer: + disabled: [5.2, 5.3] + check: dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[.0-9]+' + 5.4: + command: curl -sS https://deployer.org/releases/v3.3.0/deployer.phar -L -o /usr/local/bin/dep + post: chmod +x /usr/local/bin/dep + 5.5: + command: curl -sS https://deployer.org/releases/v4.3.4/deployer.phar -L -o /usr/local/bin/dep + post: chmod +x /usr/local/bin/dep + 5.6: + command: curl -sS https://deployer.org/releases/v4.3.4/deployer.phar -L -o /usr/local/bin/dep + post: chmod +x /usr/local/bin/dep + all: + command: curl -sS https://deployer.org/deployer.phar -L -o /usr/local/bin/dep + post: chmod +x /usr/local/bin/dep + drush7: + disabled: [5.2, 8.0] + check: drush7 --version | grep -E '7[.0-9]+\s*$' + all: + pre: | + git clone https://github.com/drush-ops/drush.git /usr/local/src/drush7 \ + && cd /usr/local/src/drush7 \ + && git checkout 7.4.0 \ + command: | + chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush7 \ + && su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush7 && composer install --no-interaction --no-progress --no-dev' \ + && ln -s /usr/local/src/drush7/drush /usr/local/bin/drush7 \ + && rm -rf /usr/local/src/drush7/.git \ + && rm -rf /usr/local/src/drush7/docs \ + && rm -rf /usr/local/src/drush7/examples \ + && rm -rf /usr/local/src/drush7/misc \ + drush8: + disabled: [5.2, 5.3, 8.0] + check: drush8 --version | grep -E '8[.0-9]+\s*$' + all: + pre: | + git clone https://github.com/drush-ops/drush.git /usr/local/src/drush8 \ + && cd /usr/local/src/drush8 \ + && git checkout $( git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname)' refs/tags | sort -n | grep -E 'tags/8[.0-9]+$' | tail -1 | sed 's|.*/||g' ) \ + command: | + chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush8 \ + && su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush8 && composer install --no-interaction --no-progress --no-dev' \ + && ln -s /usr/local/src/drush8/drush /usr/local/bin/drush8 \ + && rm -rf /usr/local/src/drush8/.git \ + && rm -rf /usr/local/src/drush8/docs \ + && rm -rf /usr/local/src/drush8/examples \ + && rm -rf /usr/local/src/drush8/misc \ + drush9: + disabled: [5.2, 5.3, 5.4, 5.5, 8.0] + check: drush9 --version | grep -E '9[.0-9]+\s*$' + all: + pre: | + git clone https://github.com/drush-ops/drush.git /usr/local/src/drush9 \ + && cd /usr/local/src/drush9 \ + && git checkout $( git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname)' refs/tags | sort -n | grep -E 'tags/9[.0-9]+$' | tail -1 | sed 's|.*/||g' ) \ + command: | + chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush9 \ + && su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush9 && php -d memory_limit=-1 `which composer` install --no-interaction --no-progress' \ + && ln -s /usr/local/src/drush9/drush /usr/local/bin/drush9 \ + && rm -rf /usr/local/src/drush9/.git \ + && rm -rf /usr/local/src/drush9/docs \ + && rm -rf /usr/local/src/drush9/examples \ + && rm -rf /usr/local/src/drush9/misc \ + codeception: + disabled: [5.2, 8.0] + check: codecept --version 2>/dev/null | grep -E '^Codeception(\sversion)?\s[.0-9]+$' + all: + command: | + COMPOSER_HOME="{{ compose_home }}" composer global require codeception/codeception \ + && ln -s {{ compose_home }}/vendor/codeception/codeception/codecept /usr/local/bin/codecept \ + drupalconsole: + disabled: [5.2, 5.3, 5.4] + check: drupal --version | grep -E 'Drupal Console Launcher\s*[.0-9]' + all: + command: curl https://drupalconsole.com/installer -L -o /usr/local/bin/drupal + post: chmod +x /usr/local/bin/drupal + gitflow: + check: git-flow version | grep -E '[.0-9]+' + all: + command: | + git clone git://github.com/petervanderdoes/gitflow.git /tmp/gitflow \ + && cd /tmp/gitflow \ + && make install \ + && cd / && rm -rf /tmp/gitflow \ + laravel: + check: laravel --version | grep -E '(Installer|version)\s*[.0-9]+' + disabled: [5.2, 5.3, 8.0] + 5.4: + pre: | + git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \ + && cd /usr/local/src/laravel-installer \ + && git checkout v1.3.7 \ + 5.5: + pre: | + git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \ + && cd /usr/local/src/laravel-installer \ + && git checkout v2.0.0 \ + 5.6: + pre: | + git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \ + && cd /usr/local/src/laravel-installer \ + && git checkout v2.0.0 \ + 7.0: + pre: | + git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \ + && cd /usr/local/src/laravel-installer \ + && git checkout v2.0.0 \ + all: + pre: | + git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \ + && cd /usr/local/src/laravel-installer \ + && git checkout $(git describe --abbrev=0 --tags) \ + command: | + chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/laravel-installer \ + && su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/laravel-installer && composer install --no-interaction --no-progress --no-dev' \ + && ln -s /usr/local/src/laravel-installer/laravel /usr/local/bin/laravel \ + && rm -rf /usr/local/src/laravel-installer/laravel/.git \ + linkcheck: + check: linkcheck --version | grep -E '^linkcheck\sv[.0-9]+' + all: + command: | + curl https://raw.githubusercontent.com/cytopia/linkcheck/master/linkcheck > /usr/local/bin/linkcheck \ + && chmod +x /usr/local/bin/linkcheck \ + linuxbrew: + check: su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew --version' | grep -E 'Homebrew\s*[.0-9]+' + all: + command: | + git clone https://github.com/Linuxbrew/brew.git /usr/local/src/linuxbrew \ + && chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/linuxbrew \ + && v="${BASH_PROFILE}" su ${MY_USER} -c -p \ + 'echo "PATH=/usr/local/src/linuxbrew/bin:/usr/local/src/linuxbrew/sbin:/usr/bin:/usr/sbin:/bin:/sbin" >> /home/devilbox/${v}' \ + && v="${BASH_PROFILE}" su ${MY_USER} -c -p \ + 'echo "export MANPATH=/usr/local/src/linuxbrew/share/man:${MANPATH}" >> /home/devilbox/${v}' \ + && v="${BASH_PROFILE}" su ${MY_USER} -c -p \ + 'echo "export INFOPATH=/usr/local/src/linuxbrew/share/man:${INFOPATH}" >> /home/devilbox/${v}' \ + && su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew config' \ + mhsendmail: + all: + command: | + wget --hsts-file=/dev/null https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ + && chmod +x mhsendmail_linux_amd64 \ + && mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ + mysqldumpsecure: + check: mysqldump-secure --version | grep -E 'Version:\s*[.0-9]+' + all: + command: | + git clone https://github.com/cytopia/mysqldump-secure.git /usr/local/src/mysqldump-secure \ + && cd /usr/local/src/mysqldump-secure \ + && git checkout $(git describe --abbrev=0 --tags) \ + && cp /usr/local/src/mysqldump-secure/bin/mysqldump-secure /usr/local/bin \ + && cp /usr/local/src/mysqldump-secure/etc/mysqldump-secure.conf /etc \ + && cp /usr/local/src/mysqldump-secure/etc/mysqldump-secure.cnf /etc \ + && touch /var/log/mysqldump-secure.log \ + && chown ${MY_USER}:${MY_GROUP} /etc/mysqldump-secure.* \ + && chown ${MY_USER}:${MY_GROUP} /var/log/mysqldump-secure.log \ + && chmod 0400 /etc/mysqldump-secure.conf \ + && chmod 0400 /etc/mysqldump-secure.cnf \ + && chmod 0644 /var/log/mysqldump-secure.log \ + && sed -i'' 's/^COMPRESS_ARG=.*/COMPRESS_ARG="-9 -c"/g' /etc/mysqldump-secure.conf \ + && sed -i'' 's/^DUMP_DIR=.*/DUMP_DIR="\/shared\/backups\/mysql"/g' /etc/mysqldump-secure.conf \ + && sed -i'' 's/^DUMP_DIR_CHMOD=.*/DUMP_DIR_CHMOD="0755"/g' /etc/mysqldump-secure.conf \ + && sed -i'' 's/^DUMP_FILE_CHMOD=.*/DUMP_FILE_CHMOD="0644"/g' /etc/mysqldump-secure.conf \ + && sed -i'' 's/^LOG_CHMOD=.*/LOG_CHMOD="0644"/g' /etc/mysqldump-secure.conf \ + && sed -i'' 's/^NAGIOS_LOG=.*/NAGIOS_LOG=0/g' /etc/mysqldump-secure.conf \ + && cd / \ + && rm -rf /usr/local/src/mysqldump-secure \ + phalcon: + disabled: [5.2, 7.3, 7.4, 8.0] + check: phalcon commands | grep -E '[.0-9]+' + 5.3: + pre: | + git clone https://github.com/phalcon/phalcon-devtools /usr/local/src/phalcon-devtools \ + && cd /usr/local/src/phalcon-devtools \ + && git checkout v2.0.7 \ + 5.4: + pre: | + git clone https://github.com/phalcon/phalcon-devtools /usr/local/src/phalcon-devtools \ + && cd /usr/local/src/phalcon-devtools \ + && git checkout v2.0.9 \ + all: + pre: | + git clone https://github.com/phalcon/phalcon-devtools /usr/local/src/phalcon-devtools \ + && cd /usr/local/src/phalcon-devtools \ + && git checkout $(git describe --abbrev=0 --tags) \ + command: | + chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/phalcon-devtools \ + && su - ${MY_USER} -c 'cd /usr/local/src/phalcon-devtools && ./phalcon.sh' \ + && ln -s /usr/local/src/phalcon-devtools/phalcon.php /usr/local/bin/phalcon \ + && cd / \ + && rm -rf /usr/local/src/phalcon-devtools/.git \ + phpcs: + check: phpcs --version | grep -E 'version [.0-9]+' + 5.2: + command: | + curl -sS -L https://github.com/squizlabs/PHP_CodeSniffer/releases/download/2.9.0/phpcs.phar > /usr/local/bin/phpcs 2>/dev/null \ + && chmod +x /usr/local/bin/phpcs \ + 5.3: + command: | + curl -sS -L https://github.com/squizlabs/PHP_CodeSniffer/releases/download/2.9.0/phpcs.phar > /usr/local/bin/phpcs 2>/dev/null \ + && chmod +x /usr/local/bin/phpcs \ + all: + command: | + curl -sS -L https://squizlabs.github.io/PHP_CodeSniffer/phpcs.phar > /usr/local/bin/phpcs 2>/dev/null \ + && chmod +x /usr/local/bin/phpcs \ + phpcbf: + check: phpcbf --version | grep -E 'version [.0-9]+' + 5.2: + command: | + curl -sS -L https://github.com/squizlabs/PHP_CodeSniffer/releases/download/2.9.0/phpcbf.phar > /usr/local/bin/phpcbf 2>/dev/null \ + && chmod +x /usr/local/bin/phpcbf \ + 5.3: + command: | + curl -sS -L https://github.com/squizlabs/PHP_CodeSniffer/releases/download/2.9.0/phpcbf.phar > /usr/local/bin/phpcbf 2>/dev/null \ + && chmod +x /usr/local/bin/phpcbf \ + all: + command: | + curl -sS -L https://squizlabs.github.io/PHP_CodeSniffer/phpcbf.phar > /usr/local/bin/phpcbf 2>/dev/null \ + && chmod +x /usr/local/bin/phpcbf \ + php-cs-fixer: + disabled: [5.2, 7.4, 8.0] + check: php-cs-fixer --version 2>&1 | grep -E 'Fixer\s+(version\s*)?[-_.0-9]+\s+' + 5.3: + command: | + curl -sS -L https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/download/v2.2.19/php-cs-fixer.phar > /usr/local/bin/php-cs-fixer 2>/dev/null \ + && chmod +x /usr/local/bin/php-cs-fixer \ + 5.4: + command: | + curl -sS -L https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/download/v2.2.19/php-cs-fixer.phar > /usr/local/bin/php-cs-fixer 2>/dev/null \ + && chmod +x /usr/local/bin/php-cs-fixer \ + 5.5: + command: | + curl -sS -L https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/download/v2.2.19/php-cs-fixer.phar > /usr/local/bin/php-cs-fixer 2>/dev/null \ + && chmod +x /usr/local/bin/php-cs-fixer \ + all: + command: | + curl -sS -L https://cs.symfony.com/download/php-cs-fixer-v2.phar > /usr/local/bin/php-cs-fixer 2>/dev/null \ + && chmod +x /usr/local/bin/php-cs-fixer \ + phpunit: + disabled: [5.2, 8.0] + check: phpunit --version | grep -iE '^PHPUnit\s[.0-9]+' + 5.3: + command: | + curl -qL https://phar.phpunit.de/phpunit-4.phar > /usr/local/bin/phpunit 2>/dev/null \ + && chmod +x /usr/local/bin/phpunit \ + 5.4: + command: | + curl -qL https://phar.phpunit.de/phpunit-4.phar > /usr/local/bin/phpunit 2>/dev/null \ + && chmod +x /usr/local/bin/phpunit \ + 5.5: + command: | + curl -qL https://phar.phpunit.de/phpunit-4.phar > /usr/local/bin/phpunit 2>/dev/null \ + && chmod +x /usr/local/bin/phpunit \ + 5.6: + command: | + curl -qL https://phar.phpunit.de/phpunit-5.phar > /usr/local/bin/phpunit 2>/dev/null \ + && chmod +x /usr/local/bin/phpunit \ + 7.0: + command: | + curl -qL https://phar.phpunit.de/phpunit-6.phar > /usr/local/bin/phpunit 2>/dev/null \ + && chmod +x /usr/local/bin/phpunit \ + all: + command: | + curl -qL https://phar.phpunit.de/phpunit-7.phar > /usr/local/bin/phpunit 2>/dev/null \ + && chmod +x /usr/local/bin/phpunit \ + photon: + disabled: [5.2, 5.3, 5.4, 8.0] + check: photon --version | grep -E 'Installer [.0-9]+' + all: + command: | + COMPOSER_HOME="{{ compose_home }}" composer global require "photoncms/installer" \ + && ln -s {{ compose_home }}/vendor/photoncms/installer/photon /usr/local/bin/photon \ + symfony: + disabled: [5.2, 5.3] + check: symfony --version | grep -E 'version\s*[.0-9]+' + all: + command: curl https://symfony.com/installer -L -o /usr/local/bin/symfony + post: chmod +x /usr/local/bin/symfony + wkhtmltopdf: + check: wkhtmltopdf --version | grep -E "^wkhtmltopdf [.0-9]+\s+\(.+patched.+\)" + 5.2: + pre: VERSION="$( curl -sSL https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+jessie_amd64\.deb' | head -1 )" + 5.3: + pre: VERSION="$( curl -sSL https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+jessie_amd64\.deb' | head -1 )" + 5.4: + pre: VERSION="$( curl -sSL https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+jessie_amd64\.deb' | head -1 )" + 5.5: + pre: VERSION="$( curl -sSL https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+jessie_amd64\.deb' | head -1 )" + all: + pre: VERSION="$( curl -sSL https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+stretch_amd64\.deb' | head -1 )" + command: | + DEBIAN_FRONTEND=noninteractive apt-get update -qq \ + && DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ + libfontenc1 libxfont1 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \ + && curl -sS -L -o /tmp/wkhtmltopdf.deb https://github.com/${VERSION} \ + && dpkg -i /tmp/wkhtmltopdf.deb \ + && rm -f /tmp/wkhtmltopdf.deb \ + post: | + DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \ + && rm -rf /var/lib/apt/lists/* \ + wpcli: + disabled: [5.2] + check: wp --allow-root --version | grep -E '[.0-9]+' + 5.3: + command: curl https://github.com/wp-cli/wp-cli/releases/download/v1.5.1/wp-cli-1.5.1.phar -L -o /usr/local/bin/wp + post: chmod +x /usr/local/bin/wp + all: + command: curl https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp + post: chmod +x /usr/local/bin/wp + cleanup: + all: + command: | + rm -rf /home/${MY_USER}/.*json \ + && rm -rf /home/${MY_USER}/.cache \ + && rm -rf /home/${MY_USER}/.composer \ + && rm -rf /home/${MY_USER}/.config \ + && rm -rf /home/${MY_USER}/.drush \ + && rm -rf /home/${MY_USER}/.subversion \ + && rm -rf /home/${MY_USER}/.v8* \ + \ + && rm -rf /root/.*json \ + && rm -rf /root/.cache \ + && rm -rf /root/.composer \ + && rm -rf /root/.config \ + && rm -rf /root/.drush \ + && rm -rf /root/.subversion \ + && rm -rf /root/.v8* \ + \ + && rm -rf /tmp/* \ + && (rm -rf /tmp/.* || true) \ From e3ddad4e50a747ff94860409dd92335aacf63a47 Mon Sep 17 00:00:00 2001 From: cytopia Date: Fri, 8 Mar 2019 15:14:14 +0100 Subject: [PATCH 2/2] Revert wget usage of --hsts-file=/dev/null --- Dockerfiles/work/Dockerfile-5.2 | 2 +- Dockerfiles/work/Dockerfile-5.3 | 2 +- Dockerfiles/work/Dockerfile-5.4 | 2 +- Dockerfiles/work/Dockerfile-5.5 | 2 +- Dockerfiles/work/Dockerfile-5.6 | 2 +- Dockerfiles/work/Dockerfile-7.0 | 2 +- Dockerfiles/work/Dockerfile-7.1 | 2 +- Dockerfiles/work/Dockerfile-7.2 | 2 +- Dockerfiles/work/Dockerfile-7.3 | 2 +- Dockerfiles/work/Dockerfile-7.4 | 2 +- Dockerfiles/work/Dockerfile-8.0 | 2 +- build/ansible/group_vars/all/work.yml | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Dockerfiles/work/Dockerfile-5.2 b/Dockerfiles/work/Dockerfile-5.2 index fc2eb7c..2e302ea 100644 --- a/Dockerfiles/work/Dockerfile-5.2 +++ b/Dockerfiles/work/Dockerfile-5.2 @@ -172,7 +172,7 @@ RUN set -x \ && su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew config' \ \ # mhsendmail - && wget --hsts-file=/dev/null https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ + && wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ && chmod +x mhsendmail_linux_amd64 \ && mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ \ diff --git a/Dockerfiles/work/Dockerfile-5.3 b/Dockerfiles/work/Dockerfile-5.3 index d2f637b..f16b523 100644 --- a/Dockerfiles/work/Dockerfile-5.3 +++ b/Dockerfiles/work/Dockerfile-5.3 @@ -191,7 +191,7 @@ RUN set -x \ && su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew config' \ \ # mhsendmail - && wget --hsts-file=/dev/null https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ + && wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ && chmod +x mhsendmail_linux_amd64 \ && mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ \ diff --git a/Dockerfiles/work/Dockerfile-5.4 b/Dockerfiles/work/Dockerfile-5.4 index 40edeef..222f51a 100644 --- a/Dockerfiles/work/Dockerfile-5.4 +++ b/Dockerfiles/work/Dockerfile-5.4 @@ -217,7 +217,7 @@ RUN set -x \ && su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew config' \ \ # mhsendmail - && wget --hsts-file=/dev/null https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ + && wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ && chmod +x mhsendmail_linux_amd64 \ && mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ \ diff --git a/Dockerfiles/work/Dockerfile-5.5 b/Dockerfiles/work/Dockerfile-5.5 index 17b528e..2ba5c1c 100644 --- a/Dockerfiles/work/Dockerfile-5.5 +++ b/Dockerfiles/work/Dockerfile-5.5 @@ -224,7 +224,7 @@ RUN set -x \ && su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew config' \ \ # mhsendmail - && wget --hsts-file=/dev/null https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ + && wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ && chmod +x mhsendmail_linux_amd64 \ && mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ \ diff --git a/Dockerfiles/work/Dockerfile-5.6 b/Dockerfiles/work/Dockerfile-5.6 index 88843a0..0de60ab 100644 --- a/Dockerfiles/work/Dockerfile-5.6 +++ b/Dockerfiles/work/Dockerfile-5.6 @@ -237,7 +237,7 @@ RUN set -x \ && su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew config' \ \ # mhsendmail - && wget --hsts-file=/dev/null https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ + && wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ && chmod +x mhsendmail_linux_amd64 \ && mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ \ diff --git a/Dockerfiles/work/Dockerfile-7.0 b/Dockerfiles/work/Dockerfile-7.0 index 2079d75..6266d99 100644 --- a/Dockerfiles/work/Dockerfile-7.0 +++ b/Dockerfiles/work/Dockerfile-7.0 @@ -237,7 +237,7 @@ RUN set -x \ && su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew config' \ \ # mhsendmail - && wget --hsts-file=/dev/null https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ + && wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ && chmod +x mhsendmail_linux_amd64 \ && mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ \ diff --git a/Dockerfiles/work/Dockerfile-7.1 b/Dockerfiles/work/Dockerfile-7.1 index 2f61ed9..86fe3d2 100644 --- a/Dockerfiles/work/Dockerfile-7.1 +++ b/Dockerfiles/work/Dockerfile-7.1 @@ -237,7 +237,7 @@ RUN set -x \ && su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew config' \ \ # mhsendmail - && wget --hsts-file=/dev/null https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ + && wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ && chmod +x mhsendmail_linux_amd64 \ && mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ \ diff --git a/Dockerfiles/work/Dockerfile-7.2 b/Dockerfiles/work/Dockerfile-7.2 index da0e871..0da3138 100644 --- a/Dockerfiles/work/Dockerfile-7.2 +++ b/Dockerfiles/work/Dockerfile-7.2 @@ -237,7 +237,7 @@ RUN set -x \ && su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew config' \ \ # mhsendmail - && wget --hsts-file=/dev/null https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ + && wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ && chmod +x mhsendmail_linux_amd64 \ && mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ \ diff --git a/Dockerfiles/work/Dockerfile-7.3 b/Dockerfiles/work/Dockerfile-7.3 index bccb6db..d61d658 100644 --- a/Dockerfiles/work/Dockerfile-7.3 +++ b/Dockerfiles/work/Dockerfile-7.3 @@ -237,7 +237,7 @@ RUN set -x \ && su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew config' \ \ # mhsendmail - && wget --hsts-file=/dev/null https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ + && wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ && chmod +x mhsendmail_linux_amd64 \ && mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ \ diff --git a/Dockerfiles/work/Dockerfile-7.4 b/Dockerfiles/work/Dockerfile-7.4 index 24401e4..aee923b 100644 --- a/Dockerfiles/work/Dockerfile-7.4 +++ b/Dockerfiles/work/Dockerfile-7.4 @@ -237,7 +237,7 @@ RUN set -x \ && su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew config' \ \ # mhsendmail - && wget --hsts-file=/dev/null https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ + && wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ && chmod +x mhsendmail_linux_amd64 \ && mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ \ diff --git a/Dockerfiles/work/Dockerfile-8.0 b/Dockerfiles/work/Dockerfile-8.0 index 204d320..2d36278 100644 --- a/Dockerfiles/work/Dockerfile-8.0 +++ b/Dockerfiles/work/Dockerfile-8.0 @@ -180,7 +180,7 @@ RUN set -x \ && su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew config' \ \ # mhsendmail - && wget --hsts-file=/dev/null https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ + && wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ && chmod +x mhsendmail_linux_amd64 \ && mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ \ diff --git a/build/ansible/group_vars/all/work.yml b/build/ansible/group_vars/all/work.yml index b4561c3..7e5d0e3 100644 --- a/build/ansible/group_vars/all/work.yml +++ b/build/ansible/group_vars/all/work.yml @@ -464,7 +464,7 @@ software_available: mhsendmail: all: command: | - wget --hsts-file=/dev/null https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ + wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ && chmod +x mhsendmail_linux_amd64 \ && mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ mysqldumpsecure: