# Auto-generated via Ansible: edit build/ansible/DOCKERFILES/Dockerfile-work.j2 instead. FROM devilbox/php-fpm:7.4-prod MAINTAINER "cytopia" ### ### Labels ### LABEL \ name="cytopia's PHP-FPM 7.4 Image" \ image="devilbox/php-fpm" \ tag="7.4-work" \ vendor="devilbox" \ license="MIT" ### ### Envs ### ENV BASH_PROFILE=".bashrc" ### ### Install Tools ### RUN set -x \ && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ && DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ dirmngr \ gnupg \ && echo "deb http://ftp.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/backports.list \ && 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 \ && 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 -q "https://deb.nodesource.com/gpgkey/nodesource.gpg.key" 2>/dev/null | apt-key add - \ && echo "deb http://deb.nodesource.com/node_8.x stretch main" > /etc/apt/sources.list.d/node.list \ && curl -q https://www.postgresql.org/media/keys/ACCC4CF8.asc 2>/dev/null | 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 | apt-key add - \ && echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \ && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ && DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ ack-grep \ aspell \ autoconf \ automake \ bash-completion \ build-essential \ bzip2 \ coreutils \ curl \ dnsutils \ dos2unix \ file \ gcc \ git \ git-flow \ git-svn \ graphviz \ hostname \ htop \ imagemagick \ iputils-ping \ jq \ less \ libc-dev \ libffi-dev\ libssl-dev\ libyaml-dev \ make \ mongodb-org-shell \ mongodb-org-tools \ moreutils \ mysql-client \ nano \ net-tools \ netcat \ nodejs \ openssh-client \ patch \ postgresql-client \ python-cffi \ python-dev \ python-pip \ python-wheel \ redis-tools \ rsync \ rubygems \ ruby-dev \ shellcheck \ silversearcher-ag \ subversion \ sudo \ tig \ tree \ unzip \ vim \ w3m \ wget \ whois \ wkhtmltopdf \ xz-utils \ yarn \ zsh \ && 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) 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 \ \ # asgardcms && COMPOSER_HOME="/usr/local/src/composer" composer global require asgardcms/asgardcms-installer \ && ln -s /usr/local/src/composer/vendor/asgardcms/asgardcms-installer/asgardcms /usr/local/bin/asgardcms \ \ # 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 \ \ && gem install mixlib-config -v 2.2.4 \ && gem install mdl \ && gem install scss_lint \ && npm install -g eslint \ && npm install -g jsonlint \ && npm install -g mdlint \ && npm install -g gulp \ \ # codeception && COMPOSER_HOME="/usr/local/src/composer" composer global require codeception/codeception \ && ln -s /usr/local/src/composer/vendor/codeception/codeception/codecept /usr/local/bin/codecept \ \ # deployer && curl 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 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 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 install --no-interaction --no-progress --no-dev' \ && 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 && curl https://drupalconsole.com/installer -L -o /usr/local/bin/drupal \ && chmod +x /usr/local/bin/drupal \ # gitflow && git clone git://github.com/petervanderdoes/gitflow.git /tmp/gitflow \ && cd /tmp/gitflow \ && make install \ && cd / && rm -rf /tmp/gitflow \ \ # grunt && npm install -g grunt \ && npm install -g grunt-cli \ \ # laravel && 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) \ \ && 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 && curl https://raw.githubusercontent.com/cytopia/linkcheck/master/linkcheck > /usr/local/bin/linkcheck \ && chmod +x /usr/local/bin/linkcheck \ \ # linuxbrew && 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 update' \ && 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 \ && chmod +x mhsendmail_linux_amd64 \ && mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ \ # 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 \ \ # phpcs && curl -q https://squizlabs.github.io/PHP_CodeSniffer/phpcs.phar > /usr/local/bin/phpcs 2>/dev/null \ && chmod +x /usr/local/bin/phpcs \ \ # phpcbf && curl -q https://squizlabs.github.io/PHP_CodeSniffer/phpcbf.phar > /usr/local/bin/phpcbf 2>/dev/null \ && chmod +x /usr/local/bin/phpcbf \ \ # phpunit && curl -qL https://phar.phpunit.de/phpunit-7.phar > /usr/local/bin/phpunit 2>/dev/null \ && chmod +x /usr/local/bin/phpunit \ \ # photon && 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 \ \ # sass && gem install sass \ # symfony && curl https://symfony.com/installer -L -o /usr/local/bin/symfony \ && chmod +x /usr/local/bin/symfony \ # webpack && npm install -g webpack \ && npm install -g webpack-cli \ \ # 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 /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 /tmp/* \ \ \ && (rm -rf /usr/local/src/composer/cache/* || 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) ### ### Configure Bash ### RUN \ { \ echo "PATH=\${PATH}:/usr/local/bin:/usr/local/sbin:/usr/local/node/bin"; \ 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 -x \ && echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \ && php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^7.4' \ && /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 -x \ && composer --version 2>/dev/null | grep -E 'version\s*[.0-9]+' \ && ansible --version | grep -E '^ansible [.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]+' \ && eslint -v | grep -E '[.0-9]+' \ && jsonlint --version | grep -E '[.0-9]+' \ && mdlint --version | grep -E '[.0-9]+' \ && gulp --version | grep -E '[.0-9]+' \ \ && codecept --version 2>/dev/null | grep -E '^Codeception(\sversion)?\s[.0-9]+$' \ && dep --version 2>/dev/null | grep -E 'Deployer\s*[.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]' \ && 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]+' \ && mysqldump-secure --version | grep -E 'Version:\s*[.0-9]+' \ && phpcs --version | grep -E 'version [.0-9]+' \ && phpcbf --version | grep -E 'version [.0-9]+' \ && phpunit --version | grep -iE '^PHPUnit\s[.0-9]+' \ && photon --version | grep -E 'Installer [.0-9]+' \ && sass --version | grep -E '[.0-9]+' \ && symfony --version | grep -E 'version\s*[.0-9]+' \ && webpack --version | grep -E '[.0-9]+' \ && wp --allow-root --version | grep -E '[.0-9]+' \ && yamllint --version 2>&1 | grep -E '[.0-9]+' \ && true ### ### Copy files ### COPY ./data/php-ini.d/php-7.4.ini /usr/local/etc/php/conf.d/xxx-devilbox-default-php.ini COPY ./data/php-fpm.conf/php-fpm-7.4.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 /etc/bashrc-devilbox.d VOLUME /etc/php-custom.d VOLUME /etc/php-fpm-custom.d VOLUME /etc/php-modules.d VOLUME /shared/backups VOLUME /var/log/php VOLUME /var/mail ### ### Ports ### EXPOSE 9000 ### ### Where to start inside the container ### WORKDIR /shared/httpd ### ### Entrypoint ### ENTRYPOINT ["/docker-entrypoint.sh"]