# Auto-generated via Ansible: edit build/ansible/DOCKERFILES/Dockerfile-work.j2 instead. FROM devilbox/php-fpm:7.2-prod MAINTAINER "cytopia" ARG ARCH ### ### Labels ### # https://github.com/opencontainers/image-spec/blob/master/annotations.md #LABEL "org.opencontainers.image.created"="" #LABEL "org.opencontainers.image.version"="" #LABEL "org.opencontainers.image.revision"="" LABEL "maintainer"="cytopia " LABEL "org.opencontainers.image.authors"="cytopia " LABEL "org.opencontainers.image.url"="https://github.com/devilbox/docker-php-fpm" LABEL "org.opencontainers.image.documentation"="https://github.com/devilbox/docker-php-fpm" LABEL "org.opencontainers.image.source"="https://github.com/devilbox/docker-php-fpm" LABEL "org.opencontainers.image.vendor"="devilbox" LABEL "org.opencontainers.image.licenses"="MIT" LABEL "org.opencontainers.image.ref.name"="7.2-work" LABEL "org.opencontainers.image.title"="PHP-FPM 7.2-work" LABEL "org.opencontainers.image.description"="PHP-FPM 7.2-work" ### ### Re-activate modules which have been deactivated in mods. ### NOTE: They will be removed at the very bottom ### RUN set -eux \ && if find /usr/local/lib/php/extensions/ -name phalcon.so | grep phalcon; then \ echo "extension=phalcon.so" > /usr/local/etc/php/conf.d/docker-php-ext-phalcon.ini; \ fi \ && if find /usr/local/lib/php/extensions/ -name psr.so | grep psr; then \ echo "extension=psr.so" > /usr/local/etc/php/conf.d/docker-php-ext-psr.ini; \ fi ### ### Envs ### ENV BASH_PROFILE=".bashrc" ### ### Install Tools ### RUN set -eux \ && DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \ apt-transport-https \ ca-certificates \ curl \ dirmngr \ gnupg \ \ && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138 \ && echo "deb http://ftp.debian.org/debian stretch-backports main" > /etc/apt/sources.list.d/backports.list \ && curl -sS -L --fail "https://packages.blackfire.io/gpg.key" | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ && echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \ && APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv A1715D88E1DF1F24 \ && echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu artful main" > /etc/apt/sources.list.d/git.list \ \ && DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \ ack-grep \ aspell \ autoconf \ automake \ bash-completion \ binutils \ blackfire-agent \ build-essential \ bzip2 \ certbot \ coreutils \ dnsutils \ dos2unix \ file \ gawk \ gcc \ git \ git-flow \ git-svn \ ghostscript \ graphviz \ gsfonts \ hostname \ htop \ imagemagick \ iputils-ping \ jq \ less \ libc-dev \ libffi-dev \ libssl-dev \ libyaml-dev \ locales \ make \ moreutils \ mariadb-client \ mupdf \ mupdf-tools \ nano \ net-tools \ netcat \ openssh-client \ patch \ patchelf \ # postgresql-client \ redis-tools \ rsync \ rubygems \ ruby-dev \ shellcheck \ silversearcher-ag \ sqlite3 \ subversion \ sudo \ tig \ tree \ unzip \ vim \ w3m \ wget \ whois \ xz-utils \ zip \ zlib1g-dev \ zsh \ && rm -rf /var/lib/apt/lists/* \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) ### ### Instal Architecture Dependent software ### #RUN set -eux \ # && if [ "${ARCH}" = "linux/amd64" ]; then \ # DEBIAN_FRONTEND=noninteractive apt-get update \ # && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \ # mongodb-org-shell \ # mongodb-org-tools; \ # fi \ # && DEBIAN_FRONTEND=noninteractive apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \ # && rm -rf /var/lib/apt/lists/* ### ### Install custom software ### RUN set -eux \ # -------------------- composer -------------------- && COMPOSER_1_VERSION="latest-1.x" \ && COMPOSER_2_VERSION="latest-2.x" \ \ && curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_1_VERSION}/composer.phar" > /usr/local/bin/composer-1 \ && curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_2_VERSION}/composer.phar" > /usr/local/bin/composer-2 \ && chmod +x /usr/local/bin/composer-1 \ && chmod +x /usr/local/bin/composer-2 \ \ && ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ \ \ # -------------------- 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 -L --fail https://bootstrap.pypa.io/pip/2.7/get-pip.py | python \ \ \ # -------------------- nvm -------------------- && NVM_VERSION="$( \ curl -sS 'https://github.com/nvm-sh/nvm/releases' \ | grep -Eo '/nvm-sh/nvm/releases/tag/v?[.0-9]+"' \ | grep -Eo 'v?[.0-9]+' \ | sort -V \ | tail -1 \ )" \ && mkdir -p /opt/nvm \ \ && curl -o- "https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh" \ | NVM_DIR="/opt/nvm" bash \ \ && { \ 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 --lts' devilbox \ && su -c '. /opt/nvm/nvm.sh; nvm use --lts' devilbox \ && su -c '. /opt/nvm/nvm.sh; corepack enable' devilbox \ \ \ # -------------------- awesomeci -------------------- && 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 -------------------- && curl -sS -k -L --fail https://deployer.org/deployer.phar -L -o /usr/local/bin/dep \ && chmod +x /usr/local/bin/dep \ \ # -------------------- drush7 -------------------- && git clone https://github.com/drush-ops/drush.git /usr/local/src/drush7 \ && cd /usr/local/src/drush7 \ && git checkout 7.4.0 \ \ && 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_MEMORY_LIMIT=-1 /usr/local/bin/composer-1 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 -------------------- && 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' ) \ \ && 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_MEMORY_LIMIT=-1 /usr/local/bin/composer-1 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 -------------------- && 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' ) \ \ && chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush9 \ && su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush9 && COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer-1 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 \ \ \ # -------------------- drupalconsole -------------------- && DURL="https://github.com$(curl -sS 'https://github.com/hechoendrupal/drupal-console-launcher/releases' | grep -Eo 'href="/.+drupal.phar"' | head -1 | sed 's/^href="//g' | sed 's/"$//g')" \ && curl -sS -L --fail "${DURL}" -L -o /usr/local/bin/drupal \ && chmod +x /usr/local/bin/drupal \ \ # -------------------- gitflow -------------------- && git clone https://github.com/petervanderdoes/gitflow-avh /tmp/gitflow \ && cd /tmp/gitflow \ && make install \ && cd / && rm -rf /tmp/gitflow \ \ \ # -------------------- laravel -------------------- && git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \ && cd /usr/local/src/laravel-installer \ && git checkout v4.0.0 \ \ && 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_MEMORY_LIMIT=-1 /usr/local/bin/composer install --no-interaction --no-progress --no-dev' \ && rm -rf /usr/local/src/laravel-installer/laravel/.git \ \ && ln -s /usr/local/src/laravel-installer/bin/laravel /usr/local/bin/laravel \ \ # -------------------- linkcheck -------------------- && curl -sS -L --fail https://raw.githubusercontent.com/cytopia/linkcheck/master/linkcheck > /usr/local/bin/linkcheck \ && chmod +x /usr/local/bin/linkcheck \ \ \ # -------------------- mhsendmail -------------------- && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \ curl -sS -L --fail https://github.com/devilbox/mhsendmail/releases/download/v0.3.0/mhsendmail_linux_amd64 > mhsendmail_linux_amd64 \ && chmod +x mhsendmail_linux_amd64 \ && mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail; \ fi \ \ \ # -------------------- mysqldumpsecure -------------------- && 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 -------------------- && 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) \ && COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer install \ \ && chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/phalcon-devtools \ && su - ${MY_USER} -c 'cd /usr/local/src/phalcon-devtools && ./phalcon.sh' \ && ln -sf /usr/local/src/phalcon-devtools/phalcon /usr/local/bin/phalcon \ && chmod +x phalcon \ && cd / \ && rm -rf /usr/local/src/phalcon-devtools/.git \ \ \ # -------------------- phpcs -------------------- && curl -sS -L --fail https://squizlabs.github.io/PHP_CodeSniffer/phpcs.phar > /usr/local/bin/phpcs \ && chmod +x /usr/local/bin/phpcs \ \ \ # -------------------- phpcbf -------------------- && curl -sS -L --fail https://squizlabs.github.io/PHP_CodeSniffer/phpcbf.phar > /usr/local/bin/phpcbf \ && chmod +x /usr/local/bin/phpcbf \ \ \ # -------------------- php-cs-fixer -------------------- && curl -sS -k -L --fail https://cs.symfony.com/download/php-cs-fixer-v2.phar > /usr/local/bin/php-cs-fixer \ && chmod +x /usr/local/bin/php-cs-fixer \ \ \ # -------------------- phpmd -------------------- && curl -sS -k -L --fail https://phpmd.org/static/latest/phpmd.phar > phpmd.phar \ && mv phpmd.phar /usr/local/bin/phpmd \ && chmod +x /usr/local/bin/phpmd \ \ \ # -------------------- phpunit -------------------- && curl -sS -k -L --fail https://phar.phpunit.de/phpunit-7.phar > /usr/local/bin/phpunit \ && chmod +x /usr/local/bin/phpunit \ \ \ # -------------------- symfony -------------------- && SYMFONY_VERSION="$( curl -sS -L --fail https://get.symfony.com/cli/LATEST )" \ && curl -sS -L --fail "https://github.com/symfony/cli/releases/download/v${SYMFONY_VERSION}/symfony_linux_$(dpkg-architecture --query DEB_HOST_ARCH)" > /usr/local/bin/symfony \ && chmod +x /usr/local/bin/symfony \ \ # -------------------- wkhtmltopdf -------------------- && VERSION="$( curl -sSL -L --fail https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+stretch_amd64\.deb' | head -1 )" \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \ DEBIAN_FRONTEND=noninteractive apt-get update -qq \ && DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ libfontenc1 libxfont2 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \ && curl -sS -L --fail -o /tmp/wkhtmltopdf.deb https://github.com/${VERSION} \ && dpkg -i /tmp/wkhtmltopdf.deb \ && rm -f /tmp/wkhtmltopdf.deb; \ fi \ \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \ DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ && rm -rf /var/lib/apt/lists/*; \ fi \ \ \ # -------------------- wpcli -------------------- && curl -sS -L --fail 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 \ \ \ \ && (rm -rf /home/devilbox/.*json || true) \ && (rm -rf /home/devilbox/.ansible || true) \ && (rm -rf /home/devilbox/.cache || true) \ && (rm -rf /home/devilbox/.composer || true) \ && (rm -rf /home/devilbox/.config || true) \ && (rm -rf /home/devilbox/.console || true) \ && (rm -rf /home/devilbox/.drush || true) \ && (rm -rf /home/devilbox/.gem || true) \ && (rm -rf /home/devilbox/.local || true) \ && (rm -rf /home/devilbox/.node || true) \ && (rm -rf /home/devilbox/.npm || true) \ && (rm -rf /home/devilbox/.pm2 || true) \ && (rm -rf /home/devilbox/.subversion || true) \ && (rm -rf /home/devilbox/.v8* || true) \ && (rm -rf /home/devilbox/node_modules || true) \ && (rm -rf /home/devilbox/yarn.lock || true) \ \ && (rm -rf /root/.*json || true) \ && (rm -rf /root/.ansible || true) \ && (rm -rf /root/.cache || true) \ && (rm -rf /root/.composer || true) \ && (rm -rf /root/.config || true) \ && (rm -rf /root/.console || true) \ && (rm -rf /root/.drush || true) \ && (rm -rf /root/.gem || true) \ && (rm -rf /root/.local || true) \ && (rm -rf /root/.node || true) \ && (rm -rf /root/.npm || true) \ && (rm -rf /root/.pm2 || true) \ && (rm -rf /root/.subversion || true) \ && (rm -rf /root/.v8* || true) \ && (rm -rf /root/node_modules || true) \ && (rm -rf /root/yarn.lock || true) \ \ && (rm -rf /usr/local/src/composer/cache/* || true) \ && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) ### ### Install Composer (PHP) ### RUN set -eux \ # -------------------- asgardcms -------------------- && COMPOSER_HOME="/usr/local/src/composer" COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer-2 global require asgardcms/asgardcms-installer \ && ln -s /usr/local/src/composer/vendor/asgardcms/asgardcms-installer/asgardcms /usr/local/bin/ \ \ # -------------------- codeception -------------------- && COMPOSER_HOME="/usr/local/src/composer" COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer-2 global require codeception/codeception \ && ln -s /usr/local/src/composer/vendor/codeception/codeception/codecept /usr/local/bin/ \ \ # -------------------- lumen -------------------- && COMPOSER_HOME="/usr/local/src/composer" COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer-2 global require laravel/lumen-installer \ && ln -s /usr/local/src/composer/vendor/laravel/lumen-installer/lumen /usr/local/bin/ \ \ # -------------------- prestissimo -------------------- && COMPOSER_HOME="/usr/local/src/composer" COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer-1 global require hirak/prestissimo \ \ \ \ && (rm -rf /home/devilbox/.*json || true) \ && (rm -rf /home/devilbox/.ansible || true) \ && (rm -rf /home/devilbox/.cache || true) \ && (rm -rf /home/devilbox/.composer || true) \ && (rm -rf /home/devilbox/.config || true) \ && (rm -rf /home/devilbox/.console || true) \ && (rm -rf /home/devilbox/.drush || true) \ && (rm -rf /home/devilbox/.gem || true) \ && (rm -rf /home/devilbox/.local || true) \ && (rm -rf /home/devilbox/.node || true) \ && (rm -rf /home/devilbox/.npm || true) \ && (rm -rf /home/devilbox/.pm2 || true) \ && (rm -rf /home/devilbox/.subversion || true) \ && (rm -rf /home/devilbox/.v8* || true) \ && (rm -rf /home/devilbox/node_modules || true) \ && (rm -rf /home/devilbox/yarn.lock || true) \ \ && (rm -rf /root/.*json || true) \ && (rm -rf /root/.ansible || true) \ && (rm -rf /root/.cache || true) \ && (rm -rf /root/.composer || true) \ && (rm -rf /root/.config || true) \ && (rm -rf /root/.console || true) \ && (rm -rf /root/.drush || true) \ && (rm -rf /root/.gem || true) \ && (rm -rf /root/.local || true) \ && (rm -rf /root/.node || true) \ && (rm -rf /root/.npm || true) \ && (rm -rf /root/.pm2 || true) \ && (rm -rf /root/.subversion || true) \ && (rm -rf /root/.v8* || true) \ && (rm -rf /root/node_modules || true) \ && (rm -rf /root/yarn.lock || true) \ \ && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) ### ### Install npm (Node) ### RUN set -eux \ # -------------------- angular_cli -------------------- && su -c '. /opt/nvm/nvm.sh; npm install -g --force @angular/cli' devilbox \ \ # -------------------- eslint -------------------- && su -c '. /opt/nvm/nvm.sh; npm install -g --force eslint' devilbox \ \ # -------------------- grunt -------------------- && su -c '. /opt/nvm/nvm.sh; npm install -g --force grunt' devilbox \ \ # -------------------- grunt_cli -------------------- && su -c '. /opt/nvm/nvm.sh; npm install -g --force grunt-cli' devilbox \ \ # -------------------- gulp -------------------- && su -c '. /opt/nvm/nvm.sh; npm install -g --force gulp' devilbox \ \ # -------------------- jsonlint -------------------- && su -c '. /opt/nvm/nvm.sh; npm install -g --force jsonlint' devilbox \ \ # -------------------- pm2 -------------------- && su -c '. /opt/nvm/nvm.sh; npm install -g --force pm2' devilbox \ \ # -------------------- mdlint -------------------- && su -c '. /opt/nvm/nvm.sh; npm install -g --force mdlint' devilbox \ \ # -------------------- sass -------------------- && su -c '. /opt/nvm/nvm.sh; npm install -g --force sass' devilbox \ \ # -------------------- stylelint -------------------- && su -c '. /opt/nvm/nvm.sh; npm install -g --force stylelint' devilbox \ \ # -------------------- vue_cli -------------------- && su -c '. /opt/nvm/nvm.sh; npm install -g --force @vue/cli' devilbox \ \ # -------------------- vue_cli_service_global -------------------- && su -c '. /opt/nvm/nvm.sh; npm install -g --force @vue/cli-service-global' devilbox \ \ # -------------------- webpack -------------------- && su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack' devilbox \ \ # -------------------- webpack_cli -------------------- && su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \ \ \ \ && if [ -f "/opt/nvm/nvm.sh" ]; then \ 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; \ fi \ \ && (rm -rf /home/devilbox/.*json || true) \ && (rm -rf /home/devilbox/.ansible || true) \ && (rm -rf /home/devilbox/.cache || true) \ && (rm -rf /home/devilbox/.composer || true) \ && (rm -rf /home/devilbox/.config || true) \ && (rm -rf /home/devilbox/.console || true) \ && (rm -rf /home/devilbox/.drush || true) \ && (rm -rf /home/devilbox/.gem || true) \ && (rm -rf /home/devilbox/.local || true) \ && (rm -rf /home/devilbox/.node || true) \ && (rm -rf /home/devilbox/.npm || true) \ && (rm -rf /home/devilbox/.pm2 || true) \ && (rm -rf /home/devilbox/.subversion || true) \ && (rm -rf /home/devilbox/.v8* || true) \ && (rm -rf /home/devilbox/node_modules || true) \ && (rm -rf /home/devilbox/yarn.lock || true) \ \ && (rm -rf /root/.*json || true) \ && (rm -rf /root/.ansible || true) \ && (rm -rf /root/.cache || true) \ && (rm -rf /root/.composer || true) \ && (rm -rf /root/.config || true) \ && (rm -rf /root/.console || true) \ && (rm -rf /root/.drush || true) \ && (rm -rf /root/.gem || true) \ && (rm -rf /root/.local || true) \ && (rm -rf /root/.node || true) \ && (rm -rf /root/.npm || true) \ && (rm -rf /root/.pm2 || true) \ && (rm -rf /root/.subversion || true) \ && (rm -rf /root/.v8* || true) \ && (rm -rf /root/node_modules || true) \ && (rm -rf /root/yarn.lock || true) \ \ && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /opt/nvm -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) ### ### Install gem (Ruby) ### RUN set -eux \ # -------------------- mixlib_config -------------------- && gem install mixlib-config -v 2.2.4 \ \ # -------------------- rb_inotify -------------------- && gem install rb-inotify -v 0.9.10 \ \ # -------------------- mdl -------------------- && gem install mdl -v 0.5.0 \ \ \ \ && (rm -rf /home/devilbox/.*json || true) \ && (rm -rf /home/devilbox/.ansible || true) \ && (rm -rf /home/devilbox/.cache || true) \ && (rm -rf /home/devilbox/.composer || true) \ && (rm -rf /home/devilbox/.config || true) \ && (rm -rf /home/devilbox/.console || true) \ && (rm -rf /home/devilbox/.drush || true) \ && (rm -rf /home/devilbox/.gem || true) \ && (rm -rf /home/devilbox/.local || true) \ && (rm -rf /home/devilbox/.node || true) \ && (rm -rf /home/devilbox/.npm || true) \ && (rm -rf /home/devilbox/.pm2 || true) \ && (rm -rf /home/devilbox/.subversion || true) \ && (rm -rf /home/devilbox/.v8* || true) \ && (rm -rf /home/devilbox/node_modules || true) \ && (rm -rf /home/devilbox/yarn.lock || true) \ \ && (rm -rf /root/.*json || true) \ && (rm -rf /root/.ansible || true) \ && (rm -rf /root/.cache || true) \ && (rm -rf /root/.composer || true) \ && (rm -rf /root/.config || true) \ && (rm -rf /root/.console || true) \ && (rm -rf /root/.drush || true) \ && (rm -rf /root/.gem || true) \ && (rm -rf /root/.local || true) \ && (rm -rf /root/.node || true) \ && (rm -rf /root/.npm || true) \ && (rm -rf /root/.pm2 || true) \ && (rm -rf /root/.subversion || true) \ && (rm -rf /root/.v8* || true) \ && (rm -rf /root/node_modules || true) \ && (rm -rf /root/yarn.lock || true) \ \ && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) ### ### Install pip (Python) packages ### RUN set -eux \ # -------------------- yamllint -------------------- && pip install --no-cache-dir --force-reinstall yamllint || true \ \ # -------------------- yq -------------------- && pip install --no-cache-dir --force-reinstall yq || true \ \ \ \ && (rm -rf /home/devilbox/.*json || true) \ && (rm -rf /home/devilbox/.ansible || true) \ && (rm -rf /home/devilbox/.cache || true) \ && (rm -rf /home/devilbox/.composer || true) \ && (rm -rf /home/devilbox/.config || true) \ && (rm -rf /home/devilbox/.console || true) \ && (rm -rf /home/devilbox/.drush || true) \ && (rm -rf /home/devilbox/.gem || true) \ && (rm -rf /home/devilbox/.local || true) \ && (rm -rf /home/devilbox/.node || true) \ && (rm -rf /home/devilbox/.npm || true) \ && (rm -rf /home/devilbox/.pm2 || true) \ && (rm -rf /home/devilbox/.subversion || true) \ && (rm -rf /home/devilbox/.v8* || true) \ && (rm -rf /home/devilbox/node_modules || true) \ && (rm -rf /home/devilbox/yarn.lock || true) \ \ && (rm -rf /root/.*json || true) \ && (rm -rf /root/.ansible || true) \ && (rm -rf /root/.cache || true) \ && (rm -rf /root/.composer || true) \ && (rm -rf /root/.config || true) \ && (rm -rf /root/.console || true) \ && (rm -rf /root/.drush || true) \ && (rm -rf /root/.gem || true) \ && (rm -rf /root/.local || true) \ && (rm -rf /root/.node || true) \ && (rm -rf /root/.npm || true) \ && (rm -rf /root/.pm2 || true) \ && (rm -rf /root/.subversion || true) \ && (rm -rf /root/.v8* || true) \ && (rm -rf /root/node_modules || true) \ && (rm -rf /root/yarn.lock || true) \ \ && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) ### ### Configure Bash ### RUN \ { \ echo 'PATH="${PATH}:/usr/local/bin:/usr/local/sbin"'; \ echo 'PATH="${HOME}/.yarn/bin:${PATH}"'; \ echo 'PATH="${HOME}/.composer/vendor/bin:${PATH}"'; \ echo 'PATH="/opt/nvm/versions/node/$(nvm version default)/bin:${PATH}"'; \ echo "export PATH"; \ echo ". /etc/bash-devilbox"; \ echo "if [ -d /etc/bashrc-devilbox.d/ ]; then"; \ echo " for f in /etc/bashrc-devilbox.d/*.sh ; do"; \ echo " if [ -r \"\${f}\" ]; then"; \ echo " . \"\${f}\""; \ echo " fi"; \ echo " done"; \ echo " unset f"; \ echo "fi"; \ } | tee -a /home/${MY_USER}/${BASH_PROFILE} /root/${BASH_PROFILE} \ && chown ${MY_USER}:${MY_GROUP} /home/${MY_USER}/${BASH_PROFILE} ### ### Verify ### RUN set -eux \ && echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \ && php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^7.2' \ && /usr/local/sbin/php-fpm --test \ \ && PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \ && if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \ && PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \ && if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \ \ && PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \ && if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \ && PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \ && if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \ && rm -f /usr/local/etc/php/php.ini RUN set -eux \ # -------------------- Software -------------------- && composer --version 2>/dev/null | grep -Ei '(composer|version)\s*[0-9][.0-9]+' \ && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^v?[0-9][.0-9]+' \ && su -c '. /opt/nvm/nvm.sh; yarn --version' devilbox | grep -E '^v?[0-9][.0-9]+' \ \ && regex-grep --version | grep -E '[0-9][.0-9]+' \ && dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[0-9][.0-9]+' \ && drush7 --version | grep -E '7[.0-9]+\s*$' \ && drush8 --version | grep -E '8[.0-9]+\s*$' \ && drush9 --version | grep -E '9[.0-9]+\s*$' \ && drupal --version | grep -E 'Drupal Console Launcher\s*[0-9][.0-9]' \ && git-flow version | grep -E '[0-9][.0-9]+' \ && laravel --version | grep -E '(Installer|version)\s*[0-9][.0-9]+' \ && linkcheck --version | grep -E '^linkcheck\sv[0-9][.0-9]+' \ && mysqldump-secure --version | grep -E 'Version:\s*[0-9][.0-9]+' \ && phalcon commands | grep -E '[0-9][.0-9]+' \ && phpcs --version | grep -E 'version [0-9][.0-9]+' \ && phpcbf --version | grep -E 'version [0-9][.0-9]+' \ && php-cs-fixer --version 2>&1 | grep -E 'Fixer\s+(version\s*)?[-_.0-9]+\s+' \ && phpmd --version | grep -E '^PHPMD [0-9][.0-9]+' \ && phpunit --version | grep -iE '^PHPUnit\s[0-9][.0-9]+' \ && symfony -V | grep -Ei 'version\s*.*v[0-9][.0-9]+' \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then wkhtmltopdf --version | grep -E "^wkhtmltopdf [0-9][.0-9]+\s+\(.+patched.+\)"; fi \ && wp --allow-root --version | grep -E '[0-9][.0-9]+' \ \ # -------------------- Composer -------------------- && asgardcms --version 2>/dev/null | grep -Ei 'AsgardCMS\sInstaller\s[0-9][.0-9]+' \ && codecept --version 2>/dev/null | grep -E '^Codeception(\sversion)?\s[0-9][.0-9]+$' \ && lumen --version 2>/dev/null | grep -E '^Lumen Installer\s[0-9][.0-9]+$' \ \ # -------------------- PIP -------------------- && yamllint --version 2>&1 | grep -E '[0-9][.0-9]+' \ && yq --version 2>&1 | grep -E '^yq\s+[0-9][.0-9]+$' \ \ # -------------------- NPM -------------------- && ng version 2>&1 | grep -iE 'Angular CLI:\s*[0-9][.0-9]+' \ && eslint -v | grep -E '[0-9][.0-9]+' \ && grunt --version | grep -E '[0-9][.0-9]+' \ && gulp --version | grep -E '[0-9][.0-9]+' \ && jsonlint --version | grep -E '[0-9][.0-9]+' \ && pm2 --no-daemon --version | tail -1 | grep -E '[0-9][.0-9]+' \ && mdlint --version | grep -E '[0-9][.0-9]+' \ && sass --version | grep -E '[0-9][.0-9]+' \ && stylelint --version | grep -E '[0-9][.0-9]+' \ && vue --version | grep -E '[0-9][.0-9]+' \ && webpack --version | grep -E '[0-9][.0-9]+' \ \ # -------------------- GEM -------------------- && mdl --version | grep -E '[0-9][.0-9]+' \ \ # -------------------- Cleanup -------------------- \ && (rm -rf /home/devilbox/.*json || true) \ && (rm -rf /home/devilbox/.ansible || true) \ && (rm -rf /home/devilbox/.cache || true) \ && (rm -rf /home/devilbox/.composer || true) \ && (rm -rf /home/devilbox/.config || true) \ && (rm -rf /home/devilbox/.console || true) \ && (rm -rf /home/devilbox/.drush || true) \ && (rm -rf /home/devilbox/.gem || true) \ && (rm -rf /home/devilbox/.local || true) \ && (rm -rf /home/devilbox/.node || true) \ && (rm -rf /home/devilbox/.npm || true) \ && (rm -rf /home/devilbox/.pm2 || true) \ && (rm -rf /home/devilbox/.subversion || true) \ && (rm -rf /home/devilbox/.v8* || true) \ && (rm -rf /home/devilbox/node_modules || true) \ && (rm -rf /home/devilbox/yarn.lock || true) \ \ && (rm -rf /root/.*json || true) \ && (rm -rf /root/.ansible || true) \ && (rm -rf /root/.cache || true) \ && (rm -rf /root/.composer || true) \ && (rm -rf /root/.config || true) \ && (rm -rf /root/.console || true) \ && (rm -rf /root/.drush || true) \ && (rm -rf /root/.gem || true) \ && (rm -rf /root/.local || true) \ && (rm -rf /root/.node || true) \ && (rm -rf /root/.npm || true) \ && (rm -rf /root/.pm2 || true) \ && (rm -rf /root/.subversion || true) \ && (rm -rf /root/.v8* || true) \ && (rm -rf /root/node_modules || true) \ && (rm -rf /root/yarn.lock || true) \ \ && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) # Deactive PSR and Phalcon: # https://github.com/devilbox/docker-php-fpm/issues/201 RUN set -eux \ && rm -f /usr/local/etc/php/conf.d/docker-php-ext-phalcon.ini || true \ && rm -f /usr/local/etc/php/conf.d/docker-php-ext-psr.ini || true \ ### ### Copy files ### COPY ./data/php-ini.d/php-7.2.ini /usr/local/etc/php/conf.d/xxx-devilbox-default-php.ini COPY ./data/php-fpm.conf/php-fpm-7.2.conf /usr/local/etc/php-fpm.conf COPY ./data/docker-entrypoint.sh /docker-entrypoint.sh COPY ./data/docker-entrypoint.d/*.sh /docker-entrypoint.d/ COPY ./data/bash-devilbox /etc/bash-devilbox COPY ./data/sudo-devilbox /etc/sudoers.d/devilbox ### ### Volumes ### VOLUME /shared/backups VOLUME /var/log/php VOLUME /var/mail ### ### Ports ### EXPOSE 9000 ### ### Where to start inside the container ### WORKDIR /shared/httpd ### ### Entrypoint ### CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/supervisord.conf"] ENTRYPOINT ["/docker-entrypoint.sh"]