mirror of
https://github.com/devilbox/docker-php-fpm.git
synced 2025-12-10 11:01:14 +00:00
592 lines
21 KiB
Docker
592 lines
21 KiB
Docker
# vi: ft=dockerfile
|
|
# Auto-generated via Ansible: edit ./ansible/DOCKERFILES/Dockerfile-work.j2 instead.
|
|
|
|
########################################################################################################################
|
|
########################################################################################################################
|
|
###
|
|
### Stage 1/7: Devilbox work image (HELP BUILDER)
|
|
###
|
|
########################################################################################################################
|
|
########################################################################################################################
|
|
|
|
###
|
|
### Installs all cli tools required to install custom tools
|
|
###
|
|
FROM devilbox/php-fpm:7.3-slim as devilbox-work-help-builder
|
|
|
|
###
|
|
### Install build_dep
|
|
###
|
|
RUN set -eux \
|
|
&& DEBIAN_FRONTEND=noninteractive apt-get update \
|
|
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
|
|
libpython3-dev \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
###
|
|
### Install run_dep
|
|
###
|
|
RUN set -eux \
|
|
&& DEBIAN_FRONTEND=noninteractive apt-get update \
|
|
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
|
|
python3-distutils \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
###
|
|
### Devilbox required helper tools from group_vars (work-help.yml)
|
|
###
|
|
|
|
# -------------------- composer --------------------
|
|
RUN set -eux \
|
|
&& 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 \
|
|
\
|
|
&& true
|
|
|
|
# -------------------- nvm --------------------
|
|
RUN set -eux \
|
|
&& NODE_VERSION="--lts" \
|
|
\
|
|
&& 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 ${NODE_VERSION}" devilbox \
|
|
&& su -c ". /opt/nvm/nvm.sh; nvm use ${NODE_VERSION}" devilbox \
|
|
&& su -c ". /opt/nvm/nvm.sh; corepack enable" devilbox \
|
|
\
|
|
&& ln -s "/opt/nvm/versions/node/$(su -c '. /opt/nvm/nvm.sh; node --version' devilbox)/bin/corepack" /usr/local/bin/ \
|
|
&& ln -s "/opt/nvm/versions/node/$(su -c '. /opt/nvm/nvm.sh; node --version' devilbox)/bin/node" /usr/local/bin/ \
|
|
&& ln -s "/opt/nvm/versions/node/$(su -c '. /opt/nvm/nvm.sh; node --version' devilbox)/bin/npm" /usr/local/bin/ \
|
|
&& ln -s "/opt/nvm/versions/node/$(su -c '. /opt/nvm/nvm.sh; node --version' devilbox)/bin/npx" /usr/local/bin/ \
|
|
&& ln -s "/opt/nvm/versions/node/$(su -c '. /opt/nvm/nvm.sh; node --version' devilbox)/bin/yarn" /usr/local/bin/ \
|
|
\
|
|
&& chmod 0777 /opt/nvm \
|
|
&& find /opt/nvm -type f -print0 | xargs -n1 -0 chmod go+w \
|
|
&& find /opt/nvm -type d -print0 | xargs -n1 -0 chmod 0777 \
|
|
\
|
|
&& rm -rf /opt/nvm/.cache \
|
|
&& rm -rf /opt/nvm/versions/node/$(su -c '. /opt/nvm/nvm.sh; node --version' devilbox)/share \
|
|
&& rm -rf /opt/nvm/versions/node/$(su -c '. /opt/nvm/nvm.sh; node --version' devilbox)/include \
|
|
\
|
|
&& true
|
|
|
|
# -------------------- pip --------------------
|
|
RUN set -eux \
|
|
&& curl -sS -L --fail https://bootstrap.pypa.io/get-pip.py | python3 \
|
|
\
|
|
&& /bin/ls -1 /usr/local/lib/ | grep ^python | while read -r version; do \
|
|
cd "/usr/local/lib/${version}/" \
|
|
&& find . -name '*.pyc' -print0 | xargs -0 -n1 rm -rf \
|
|
&& find . -name '*.exe' -print0 | xargs -0 -n1 rm -rf \
|
|
&& find . -name '__pycache__' -print0 | xargs -0 -n1 rm -rf \
|
|
\
|
|
&& if [ -d "dist-packages" ]; then \
|
|
cd "dist-packages" \
|
|
&& pwd \
|
|
&& if /bin/ls -1 | grep -v '^pip'; then \
|
|
/bin/ls -1 | grep -v '^pip' | xargs -n1 rm -rf; \
|
|
fi \
|
|
fi \
|
|
done \
|
|
\
|
|
&& true
|
|
|
|
###
|
|
### Configure Bash (composer, node yarn)
|
|
###
|
|
RUN set -eux \
|
|
&& { \
|
|
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}/.bashrc /root/.bashrc \
|
|
&& chown ${MY_USER}:${MY_GROUP} /home/${MY_USER}/.bashrc
|
|
|
|
|
|
|
|
########################################################################################################################
|
|
########################################################################################################################
|
|
###
|
|
### Stage 2/7: Devilbox work image (HELP)
|
|
###
|
|
########################################################################################################################
|
|
########################################################################################################################
|
|
|
|
###
|
|
### Copies all cli tools required to run Devilbox and its intranet into a clean image
|
|
###
|
|
FROM devilbox/php-fpm:7.3-slim as devilbox-work-help
|
|
|
|
###
|
|
### Install run_dep
|
|
###
|
|
RUN set -eux \
|
|
&& DEBIAN_FRONTEND=noninteractive apt-get update \
|
|
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
|
|
python3-distutils \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
###
|
|
### Copy nvm
|
|
###
|
|
COPY --from=devilbox-work-help-builder /opt/nvm /opt/nvm
|
|
|
|
###
|
|
### Copy binaries (Composer & Pip binaries)
|
|
###
|
|
COPY --from=devilbox-work-help-builder /usr/local/bin /usr/local/bin
|
|
|
|
###
|
|
### Python packages
|
|
###
|
|
COPY --from=devilbox-work-help-builder /usr/local/lib /usr/local/lib
|
|
|
|
|
|
|
|
########################################################################################################################
|
|
########################################################################################################################
|
|
###
|
|
### Stage 3/7: Devilbox work image (HELP TEST)
|
|
###
|
|
########################################################################################################################
|
|
########################################################################################################################
|
|
|
|
###
|
|
### Test all Devilbox cli utils if copying was successful
|
|
###
|
|
FROM devilbox-work-help as devilbox-work-help-test
|
|
|
|
###
|
|
### Devilbox required helper tools from group_vars (work-help.yml)
|
|
###
|
|
|
|
# -------------------- composer --------------------
|
|
RUN set -eux \
|
|
&& composer --version 2>/dev/null | grep -Ei '(composer|version)\s*[0-9][.0-9]+' \
|
|
&& true
|
|
|
|
# -------------------- nvm --------------------
|
|
RUN set -eux \
|
|
&& su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^v?[0-9][.0-9]+' \
|
|
&& su -c '. /opt/nvm/nvm.sh; node --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]+' \
|
|
\
|
|
&& true
|
|
|
|
# -------------------- pip --------------------
|
|
RUN set -eux \
|
|
&& pip --version \
|
|
&& true
|
|
|
|
###
|
|
### Re-activate modules which have been deactivated in mods (for testing).
|
|
###
|
|
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
|
|
|
|
###
|
|
### Check if PHP still works
|
|
###
|
|
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.3' \
|
|
&& /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
|
|
|
|
|
|
|
|
########################################################################################################################
|
|
########################################################################################################################
|
|
###
|
|
### Stage 4/7: Devilbox work image (TOOLS BUILDER)
|
|
###
|
|
########################################################################################################################
|
|
########################################################################################################################
|
|
|
|
###
|
|
### This stage can be easily modified by adding tools into the ./php_tools/ directory.
|
|
###
|
|
FROM devilbox-work-help as devilbox-work-tools-builder
|
|
|
|
###
|
|
### Install build_dep, run_dep or tools type: apt
|
|
###
|
|
RUN set -eux \
|
|
&& DEBIAN_FRONTEND=noninteractive apt-get update \
|
|
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
|
|
# ---------- build_deps ----------
|
|
ruby-dev \
|
|
# ---------- run_deps ----------
|
|
ruby \
|
|
# ---------- type: apt ----------
|
|
jq \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
###
|
|
### Install defined php_tools
|
|
###
|
|
|
|
# -------------------- (npm) angular_cli --------------------
|
|
RUN set -eux \
|
|
&& su -c '. /opt/nvm/nvm.sh; npm install -g --force @angular/cli' devilbox \
|
|
&& ln -s /opt/nvm/versions/node/$(su -c '. /opt/nvm/nvm.sh; node --version' devilbox)/bin/ng /usr/local/bin/ \
|
|
&& ng version 2>&1 | grep -iE 'Angular CLI:\s*[0-9][.0-9]+' || (ng version; false) \
|
|
&& true
|
|
|
|
# -------------------- (composer) asgardcms --------------------
|
|
RUN set -eux \
|
|
&& COMPOSER_HOME="/usr/local/src/composer" COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer-2 global require --no-interaction --no-cache asgardcms/asgardcms-installer:dev-master \
|
|
&& ln -s /usr/local/src/composer/vendor/asgardcms/asgardcms-installer/asgardcms /usr/local/bin/ \
|
|
&& rm -rf /usr/local/src/composer/cache/* \
|
|
&& asgardcms --version 2>/dev/null | grep -Ei 'AsgardCMS\sInstaller\s[0-9][.0-9]+' || (asgardcms --version; false) \
|
|
&& true
|
|
|
|
# -------------------- (composer) codeception --------------------
|
|
RUN set -eux \
|
|
&& COMPOSER_HOME="/usr/local/src/composer" COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer-2 global require --no-interaction --no-cache codeception/codeception \
|
|
&& ln -s /usr/local/src/composer/vendor/codeception/codeception/codecept /usr/local/bin/ \
|
|
&& rm -rf /usr/local/src/composer/cache/* \
|
|
&& codecept --version 2>/dev/null | grep -E '^Codeception(\sversion)?\s[0-9][.0-9]+$' || (codecept --version; false) \
|
|
&& true
|
|
|
|
# -------------------- (npm) eslint --------------------
|
|
RUN set -eux \
|
|
&& su -c '. /opt/nvm/nvm.sh; npm install -g --force eslint' devilbox \
|
|
&& ln -s /opt/nvm/versions/node/$(su -c '. /opt/nvm/nvm.sh; node --version' devilbox)/bin/eslint /usr/local/bin/ \
|
|
&& eslint -v | grep -E '[0-9][.0-9]+' || (eslint -v; false) \
|
|
&& true
|
|
|
|
# -------------------- (apt) jq --------------------
|
|
RUN set -eux \
|
|
&& jq --version 2>&1 | grep -E '[0-9][.0-9]+' || (jq --version; false) \
|
|
&& true
|
|
|
|
# -------------------- (composer) lumen --------------------
|
|
RUN set -eux \
|
|
&& COMPOSER_HOME="/usr/local/src/composer" COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer-2 global require --no-interaction --no-cache laravel/lumen-installer \
|
|
&& ln -s /usr/local/src/composer/vendor/laravel/lumen-installer/lumen /usr/local/bin/ \
|
|
&& rm -rf /usr/local/src/composer/cache/* \
|
|
&& lumen --version 2>/dev/null | grep -E '^Lumen Installer\s[0-9][.0-9]+$' || (lumen --version; false) \
|
|
&& true
|
|
|
|
# -------------------- (rubygem) mdl --------------------
|
|
RUN set -eux \
|
|
&& gem install mdl \
|
|
&& mdl --version | grep -E '[.0-9]+' || (mdl --version; false) \
|
|
&& true
|
|
|
|
# -------------------- (custom) phpunit --------------------
|
|
RUN set -eux \
|
|
&& PHP_UNIT_VERSION="" \
|
|
&& if [ -n "${PHP_UNIT_VERSION}" ]; then \
|
|
PHP_UNIT_URL="https://phar.phpunit.de/phpunit-${PHP_UNIT_VERSION}.phar"; \
|
|
else \
|
|
PHP_UNIT_URL="https://phar.phpunit.de/phpunit.phar"; \
|
|
fi \
|
|
&& curl -sS -L --fail "${PHP_UNIT_URL}" -L -o /usr/local/bin/phpunit \
|
|
\
|
|
&& chmod +x /usr/local/bin/phpunit \
|
|
&& phpunit --version | grep -iE '^PHPUnit\s[0-9][.0-9]+' || (phpunit --version; false) \
|
|
&& true
|
|
|
|
# -------------------- (pip) pwncat --------------------
|
|
RUN set -eux \
|
|
&& pip install --no-cache-dir --no-compile --force-reinstall pwncat \
|
|
&& ln -s pwncat /usr/local/bin/netcat \
|
|
&& ln -s pwncat /usr/local/bin/nc \
|
|
\
|
|
&& pwncat --version 2>&1 | grep -E 'Version [0-9][.0-9]+' || (pwncat --version; false) \
|
|
&& true
|
|
|
|
# -------------------- (custom) wpcli --------------------
|
|
RUN set -eux \
|
|
&& WPCLI_URL="https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar" \
|
|
&& curl -sS -L --fail "${WPCLI_URL}" -L -o /usr/local/bin/wp \
|
|
&& chmod +x /usr/local/bin/wp \
|
|
&& wp --allow-root --version | grep -E '[0-9][.0-9]+' || (wp --allow-root --version; false) \
|
|
&& true
|
|
|
|
# -------------------- (pip) yamllint --------------------
|
|
RUN set -eux \
|
|
&& pip install --no-cache-dir --no-compile --force-reinstall yamllint \
|
|
&& yamllint --version 2>&1 | grep -E '[0-9][.0-9]+' || (yamllint --version; false) \
|
|
&& true
|
|
|
|
# -------------------- (pip) yq --------------------
|
|
RUN set -eux \
|
|
&& pip install --no-cache-dir --no-compile --force-reinstall yq \
|
|
&& yq --version 2>&1 | grep -E '[0-9][.0-9]+' || (yq --version; false) \
|
|
&& true
|
|
|
|
###
|
|
### Post fixes
|
|
###
|
|
RUN set -eux \
|
|
&& if [ ! -d "/var/lib/gems" ]; then \
|
|
mkdir "/var/lib/gems"; \
|
|
fi
|
|
|
|
|
|
|
|
########################################################################################################################
|
|
########################################################################################################################
|
|
###
|
|
### Stage 5/7: Devilbox work image (TOOLS)
|
|
###
|
|
########################################################################################################################
|
|
########################################################################################################################
|
|
|
|
###
|
|
### This stage can be easily modified by adding tools into the ./php_tools/ directory.
|
|
###
|
|
FROM devilbox-work-help as devilbox-work-tools
|
|
|
|
###
|
|
### Install run_dep or tools type: apt
|
|
###
|
|
RUN set -eux \
|
|
&& DEBIAN_FRONTEND=noninteractive apt-get update \
|
|
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
|
|
# ---------- run_deps ----------
|
|
ruby \
|
|
# ---------- type: apt ----------
|
|
jq \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
###
|
|
### Copy Custom (binaries in /usr/local/bin)
|
|
###
|
|
COPY --from=devilbox-work-tools-builder /usr/local/bin /usr/local/bin
|
|
|
|
###
|
|
### Copy NPM
|
|
###
|
|
COPY --from=devilbox-work-tools-builder /opt/nvm /opt/nvm
|
|
|
|
###
|
|
### Copy Composer
|
|
###
|
|
COPY --from=devilbox-work-tools-builder /usr/local/src /usr/local/src
|
|
|
|
###
|
|
### Copy Pip
|
|
###
|
|
COPY --from=devilbox-work-tools-builder /usr/local/lib /usr/local/lib
|
|
|
|
###
|
|
### Copy RubyGems
|
|
###
|
|
COPY --from=devilbox-work-tools-builder /var/lib/gems /var/lib/gems
|
|
|
|
|
|
# FIXME: / TODO: Add post: stage into here as well
|
|
|
|
|
|
|
|
########################################################################################################################
|
|
########################################################################################################################
|
|
###
|
|
### Stage 6/7: Devilbox work image (TOOLS TEST)
|
|
###
|
|
########################################################################################################################
|
|
########################################################################################################################
|
|
|
|
###
|
|
### Test all Devilbox cli utils if copying was successful
|
|
###
|
|
FROM devilbox-work-tools as devilbox-work-tools-test
|
|
|
|
|
|
# -------------------- (npm) angular_cli --------------------
|
|
RUN set -eux \
|
|
&& ng version 2>&1 | grep -iE 'Angular CLI:\s*[0-9][.0-9]+' || (ng version; false) \
|
|
&& true
|
|
|
|
# -------------------- (composer) asgardcms --------------------
|
|
RUN set -eux \
|
|
&& asgardcms --version 2>/dev/null | grep -Ei 'AsgardCMS\sInstaller\s[0-9][.0-9]+' || (asgardcms --version; false) \
|
|
&& true
|
|
|
|
# -------------------- (composer) codeception --------------------
|
|
RUN set -eux \
|
|
&& codecept --version 2>/dev/null | grep -E '^Codeception(\sversion)?\s[0-9][.0-9]+$' || (codecept --version; false) \
|
|
&& true
|
|
|
|
# -------------------- (npm) eslint --------------------
|
|
RUN set -eux \
|
|
&& eslint -v | grep -E '[0-9][.0-9]+' || (eslint -v; false) \
|
|
&& true
|
|
|
|
# -------------------- (apt) jq --------------------
|
|
RUN set -eux \
|
|
&& jq --version 2>&1 | grep -E '[0-9][.0-9]+' || (jq --version; false) \
|
|
&& true
|
|
|
|
# -------------------- (composer) lumen --------------------
|
|
RUN set -eux \
|
|
&& lumen --version 2>/dev/null | grep -E '^Lumen Installer\s[0-9][.0-9]+$' || (lumen --version; false) \
|
|
&& true
|
|
|
|
# -------------------- (rubygem) mdl --------------------
|
|
RUN set -eux \
|
|
&& mdl --version | grep -E '[.0-9]+' || (mdl --version; false) \
|
|
&& true
|
|
|
|
# -------------------- (custom) phpunit --------------------
|
|
RUN set -eux \
|
|
&& phpunit --version | grep -iE '^PHPUnit\s[0-9][.0-9]+' || (phpunit --version; false) \
|
|
&& true
|
|
|
|
# -------------------- (pip) pwncat --------------------
|
|
RUN set -eux \
|
|
&& pwncat --version 2>&1 | grep -E 'Version [0-9][.0-9]+' || (pwncat --version; false) \
|
|
&& true
|
|
|
|
# -------------------- (custom) wpcli --------------------
|
|
RUN set -eux \
|
|
&& wp --allow-root --version | grep -E '[0-9][.0-9]+' || (wp --allow-root --version; false) \
|
|
&& true
|
|
|
|
# -------------------- (pip) yamllint --------------------
|
|
RUN set -eux \
|
|
&& yamllint --version 2>&1 | grep -E '[0-9][.0-9]+' || (yamllint --version; false) \
|
|
&& true
|
|
|
|
# -------------------- (pip) yq --------------------
|
|
RUN set -eux \
|
|
&& yq --version 2>&1 | grep -E '[0-9][.0-9]+' || (yq --version; false) \
|
|
&& true
|
|
|
|
###
|
|
### Re-activate modules which have been deactivated in mods (for testing).
|
|
###
|
|
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
|
|
|
|
###
|
|
### Check if PHP still works
|
|
###
|
|
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.3' \
|
|
&& /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
|
|
|
|
|
|
|
|
########################################################################################################################
|
|
########################################################################################################################
|
|
###
|
|
### Stage 7/7: Devilbox sliwork image (FINAL)
|
|
###
|
|
########################################################################################################################
|
|
########################################################################################################################
|
|
|
|
###
|
|
### Prepare final base image (STAGE: work)
|
|
###
|
|
FROM devilbox-work-tools as work
|
|
MAINTAINER "cytopia" <cytopia@everythingcli.org>
|
|
|
|
###
|
|
### 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 <cytopia@everythingcli.org>"
|
|
LABEL "org.opencontainers.image.authors"="cytopia <cytopia@everythingcli.org>"
|
|
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.3-work"
|
|
LABEL "org.opencontainers.image.title"="PHP-FPM 7.3-work"
|
|
LABEL "org.opencontainers.image.description"="PHP-FPM 7.3-work"
|
|
|
|
###
|
|
### 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"]
|