mirror of
https://github.com/devilbox/docker-php-fpm.git
synced 2025-12-10 11:01:14 +00:00
378 lines
13 KiB
Plaintext
378 lines
13 KiB
Plaintext
# Auto-generated via Ansible: edit build/ansible/DOCKERFILES/Dockerfile-work.j2 instead.
|
|
FROM devilbox/php-fpm:8.0-prod
|
|
MAINTAINER "cytopia" <cytopia@everythingcli.org>
|
|
|
|
|
|
###
|
|
### Labels
|
|
###
|
|
LABEL \
|
|
name="cytopia's PHP-FPM 8.0 Image" \
|
|
image="devilbox/php-fpm" \
|
|
tag="8.0-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 \
|
|
curl \
|
|
dirmngr \
|
|
gnupg \
|
|
&& echo "deb http://ftp.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/backports.list \
|
|
&& curl -sS "https://packages.blackfire.io/gpg.key" 2>/dev/null | 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 \
|
|
&& 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 - \
|
|
&& 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 \
|
|
binutils \
|
|
blackfire-agent \
|
|
build-essential \
|
|
bzip2 \
|
|
coreutils \
|
|
dnsutils \
|
|
dos2unix \
|
|
file \
|
|
gawk \
|
|
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 \
|
|
patchelf \
|
|
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 \
|
|
zip \
|
|
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 \
|
|
\
|
|
# 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 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 \
|
|
&& chmod +x /usr/local/bin/dep \
|
|
# 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
|
|
&& 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 \
|
|
\
|
|
# 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 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 -sS -L https://squizlabs.github.io/PHP_CodeSniffer/phpcs.phar > /usr/local/bin/phpcs 2>/dev/null \
|
|
&& chmod +x /usr/local/bin/phpcs \
|
|
\
|
|
# phpcbf
|
|
&& 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 \
|
|
\
|
|
# 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* \
|
|
\
|
|
&& 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/* \
|
|
\
|
|
\
|
|
&& (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 '^8.0' \
|
|
&& /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]+$' \
|
|
&& 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]+' \
|
|
\
|
|
&& 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]+' \
|
|
&& 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-8.0.ini /usr/local/etc/php/conf.d/xxx-devilbox-default-php.ini
|
|
COPY ./data/php-fpm.conf/php-fpm-8.0.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
|
|
###
|
|
ENTRYPOINT ["/docker-entrypoint.sh"]
|