From 5331df4ddd4d4c9884010bbc5d6055ee051619ae Mon Sep 17 00:00:00 2001 From: David Alger Date: Mon, 11 May 2020 11:56:40 -0500 Subject: [PATCH] Deduplicate php-fpm and php-debug container service specs Summary of side-effects of these changes: * PHP_IDE_CONFIG is specified on both php-fpm and php-debug containers * Laravel environment will now default to PHP 7.3 (version is not currently being locked in .env file) * Magento 1 environment will now run default PHP 7.3 unless locked in .env file (it is and has been dumped to .env file as 7.2 for a while now) The drift in spec resulting from these changes follows: davidalger:09:12 AM:/sites/testenvs$ for type in local laravel magento1 magento2; do echo "==> comparing $type"; (cd $type; diff -u develop.yml <(warden env config)) done ==> comparing local ==> comparing laravel --- develop.yml 2020-05-11 11:57:43.000000000 -0500 +++ /dev/fd/63 2020-05-12 09:36:06.000000000 -0500 @@ -53,7 +53,7 @@ app.config.test: 0.0.0.0 config.test: 0.0.0.0 hostname: config-php-debug - image: quay.io/warden/php-fpm:7.2-debug + image: quay.io/warden/php-fpm:7.3-debug volumes: - /Users/davidalger/.warden/ssl/rootca/certs:/etc/ssl/warden-rootca-cert:ro - /Users/davidalger/.composer:/home/www-data/.composer:delegated @@ -64,6 +64,7 @@ - db environment: NODE_VERSION: '10' + PHP_IDE_CONFIG: serverName=config-docker SSH_AUTH_SOCK: /tmp/ssh-auth.sock TRAEFIK_DOMAIN: config.test TRAEFIK_SUBDOMAIN: app @@ -71,7 +72,7 @@ app.config.test: 0.0.0.0 config.test: 0.0.0.0 hostname: config-php-fpm - image: quay.io/warden/php-fpm:7.2 + image: quay.io/warden/php-fpm:7.3 volumes: - /Users/davidalger/.warden/ssl/rootca/certs:/etc/ssl/warden-rootca-cert:ro - /Users/davidalger/.composer:/home/www-data/.composer:delegated ==> comparing magento1 --- develop.yml 2020-05-11 11:57:59.000000000 -0500 +++ /dev/fd/63 2020-05-12 09:36:07.000000000 -0500 @@ -66,6 +66,7 @@ - db environment: NODE_VERSION: '10' + PHP_IDE_CONFIG: serverName=config-docker SSH_AUTH_SOCK: /tmp/ssh-auth.sock TRAEFIK_DOMAIN: config.test TRAEFIK_SUBDOMAIN: app ==> comparing magento2 --- develop.yml 2020-05-11 11:58:04.000000000 -0500 +++ /dev/fd/63 2020-05-12 09:36:07.000000000 -0500 @@ -84,6 +84,7 @@ - db environment: NODE_VERSION: '10' + PHP_IDE_CONFIG: serverName=config-docker SSH_AUTH_SOCK: /tmp/ssh-auth.sock TRAEFIK_DOMAIN: config.test TRAEFIK_SUBDOMAIN: app --- .vscode/settings.json | 5 ++- commands/env.cmd | 9 ++++ environments/laravel/laravel.base.yml | 29 ------------- environments/magento1/magento1.base.yml | 29 ------------- environments/magento1/magento1.darwin.yml | 6 +++ environments/magento1/magento1.linux-gnu.yml | 6 +++ environments/magento2/magento2.base.yml | 43 ++++---------------- environments/magento2/magento2.darwin.yml | 23 ++++------- environments/magento2/magento2.linux-gnu.yml | 19 ++++----- environments/services/php-fpm.base.yml | 30 ++++++++++++++ environments/services/php-fpm.darwin.yml | 8 ++++ environments/services/php-fpm.linux-gnu.yml | 8 ++++ utils/env.sh | 8 ++-- 13 files changed, 99 insertions(+), 124 deletions(-) create mode 100644 environments/services/php-fpm.base.yml create mode 100644 environments/services/php-fpm.darwin.yml create mode 100644 environments/services/php-fpm.linux-gnu.yml diff --git a/.vscode/settings.json b/.vscode/settings.json index 9693e85a..4240132b 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,8 @@ { "files.exclude": { "docs/_build": true - } + }, + "cSpell.words": [ + "appdata" + ] } \ No newline at end of file diff --git a/commands/env.cmd b/commands/env.cmd index 7926f9fd..6ac85cf4 100644 --- a/commands/env.cmd +++ b/commands/env.cmd @@ -15,12 +15,21 @@ fi ## simply allow the return code from docker-compose to bubble up per normal trap '' ERR +## configure environment type defaults +if [[ ${WARDEN_ENV_TYPE} =~ ^magento ]]; then + export WARDEN_SVC_PHP_VARIANT=-${WARDEN_ENV_TYPE} +fi + ## configure docker-compose files DOCKER_COMPOSE_ARGS=() appendEnvPartialIfExists "base" appendEnvPartialIfExists "${WARDEN_ENV_SUBT}" +[[ ${WARDEN_ENV_TYPE} != local ]] \ + && appendEnvPartialIfExists "php-fpm.base" \ + && appendEnvPartialIfExists "php-fpm.${WARDEN_ENV_SUBT}" + [[ ${WARDEN_TEST_DB} -eq 1 ]] \ && appendEnvPartialIfExists "tests" diff --git a/environments/laravel/laravel.base.yml b/environments/laravel/laravel.base.yml index 5f241e60..94b11339 100644 --- a/environments/laravel/laravel.base.yml +++ b/environments/laravel/laravel.base.yml @@ -25,40 +25,11 @@ services: - traefik.http.services.${WARDEN_ENV_NAME}-nginx.loadbalancer.server.port=80 php-fpm: - hostname: "${WARDEN_ENV_NAME}-php-fpm" - image: quay.io/warden/php-fpm:${PHP_VERSION:-7.2} - environment: - - TRAEFIK_DOMAIN - - TRAEFIK_SUBDOMAIN - - SSH_AUTH_SOCK=/tmp/ssh-auth.sock - - NODE_VERSION=${NODE_VERSION:-10} - extra_hosts: - - ${TRAEFIK_DOMAIN}:${TRAEFIK_ADDRESS:-0.0.0.0} - - ${TRAEFIK_SUBDOMAIN:-app}.${TRAEFIK_DOMAIN}:${TRAEFIK_ADDRESS:-0.0.0.0} - depends_on: - - db volumes: - - ${WARDEN_SSL_DIR}/rootca/certs:/etc/ssl/warden-rootca-cert:ro - - ${WARDEN_COMPOSER_DIR}:/home/www-data/.composer:delegated - .${WARDEN_WEB_ROOT:-}/:/var/www/html:delegated php-debug: - hostname: "${WARDEN_ENV_NAME}-php-debug" - image: quay.io/warden/php-fpm:${PHP_VERSION:-7.2}-debug - environment: - - TRAEFIK_DOMAIN - - TRAEFIK_SUBDOMAIN - - SSH_AUTH_SOCK=/tmp/ssh-auth.sock - - NODE_VERSION=${NODE_VERSION:-10} - - PHP_IDE_CONFIG=serverName=${WARDEN_ENV_NAME}-docker - extra_hosts: - - ${TRAEFIK_DOMAIN}:${TRAEFIK_ADDRESS:-0.0.0.0} - - ${TRAEFIK_SUBDOMAIN:-app}.${TRAEFIK_DOMAIN}:${TRAEFIK_ADDRESS:-0.0.0.0} - depends_on: - - php-fpm volumes: - - ${WARDEN_SSL_DIR}/rootca/certs:/etc/ssl/warden-rootca-cert:ro - - ${WARDEN_COMPOSER_DIR}:/home/www-data/.composer:delegated - .${WARDEN_WEB_ROOT:-}/:/var/www/html:delegated db: diff --git a/environments/magento1/magento1.base.yml b/environments/magento1/magento1.base.yml index 95c36efc..0f16fa5d 100644 --- a/environments/magento1/magento1.base.yml +++ b/environments/magento1/magento1.base.yml @@ -24,40 +24,11 @@ services: - traefik.http.services.${WARDEN_ENV_NAME}-nginx.loadbalancer.server.port=80 php-fpm: - hostname: "${WARDEN_ENV_NAME}-php-fpm" - image: quay.io/warden/php-fpm:${PHP_VERSION:-7.2}-magento1 - environment: - - TRAEFIK_DOMAIN - - TRAEFIK_SUBDOMAIN - - SSH_AUTH_SOCK=/tmp/ssh-auth.sock - - NODE_VERSION=${NODE_VERSION:-10} - extra_hosts: - - ${TRAEFIK_DOMAIN}:${TRAEFIK_ADDRESS:-0.0.0.0} - - ${TRAEFIK_SUBDOMAIN:-app}.${TRAEFIK_DOMAIN}:${TRAEFIK_ADDRESS:-0.0.0.0} - depends_on: - - db volumes: - - ${WARDEN_SSL_DIR}/rootca/certs:/etc/ssl/warden-rootca-cert:ro - - ${WARDEN_COMPOSER_DIR}:/home/www-data/.composer:delegated - .${WARDEN_WEB_ROOT:-}/:/var/www/html:delegated php-debug: - hostname: "${WARDEN_ENV_NAME}-php-debug" - image: quay.io/warden/php-fpm:${PHP_VERSION:-7.2}-magento1-debug - environment: - - TRAEFIK_DOMAIN - - TRAEFIK_SUBDOMAIN - - SSH_AUTH_SOCK=/tmp/ssh-auth.sock - - NODE_VERSION=${NODE_VERSION:-10} - - PHP_IDE_CONFIG=serverName=${WARDEN_ENV_NAME}-docker - extra_hosts: - - ${TRAEFIK_DOMAIN}:${TRAEFIK_ADDRESS:-0.0.0.0} - - ${TRAEFIK_SUBDOMAIN:-app}.${TRAEFIK_DOMAIN}:${TRAEFIK_ADDRESS:-0.0.0.0} - depends_on: - - php-fpm volumes: - - ${WARDEN_SSL_DIR}/rootca/certs:/etc/ssl/warden-rootca-cert:ro - - ${WARDEN_COMPOSER_DIR}:/home/www-data/.composer:delegated - .${WARDEN_WEB_ROOT:-}/:/var/www/html:delegated db: diff --git a/environments/magento1/magento1.darwin.yml b/environments/magento1/magento1.darwin.yml index 6327a359..1ca1f35d 100644 --- a/environments/magento1/magento1.darwin.yml +++ b/environments/magento1/magento1.darwin.yml @@ -6,8 +6,14 @@ services: php-fpm: volumes: + - ${WARDEN_SSL_DIR}/rootca/certs:/etc/ssl/warden-rootca-cert:ro + - ${WARDEN_COMPOSER_DIR}:/home/www-data/.composer:delegated - /run/host-services/ssh-auth.sock:/run/host-services/ssh-auth.sock + - .${WARDEN_WEB_ROOT:-}/:/var/www/html:delegated php-debug: volumes: + - ${WARDEN_SSL_DIR}/rootca/certs:/etc/ssl/warden-rootca-cert:ro + - ${WARDEN_COMPOSER_DIR}:/home/www-data/.composer:delegated - /run/host-services/ssh-auth.sock:/run/host-services/ssh-auth.sock + - .${WARDEN_WEB_ROOT:-}/:/var/www/html:delegated diff --git a/environments/magento1/magento1.linux-gnu.yml b/environments/magento1/magento1.linux-gnu.yml index 64a7dc05..4bc355ab 100644 --- a/environments/magento1/magento1.linux-gnu.yml +++ b/environments/magento1/magento1.linux-gnu.yml @@ -2,8 +2,14 @@ version: "3.5" services: php-fpm: volumes: + - ${WARDEN_SSL_DIR}/rootca/certs:/etc/ssl/warden-rootca-cert:ro + - ${WARDEN_COMPOSER_DIR}:/home/www-data/.composer - ${SSH_AUTH_SOCK:-/dev/null}:/run/host-services/ssh-auth.sock + - .${WARDEN_WEB_ROOT:-}/:/var/www/html php-debug: volumes: + - ${WARDEN_SSL_DIR}/rootca/certs:/etc/ssl/warden-rootca-cert:ro + - ${WARDEN_COMPOSER_DIR}:/home/www-data/.composer - ${SSH_AUTH_SOCK:-/dev/null}:/run/host-services/ssh-auth.sock + - .${WARDEN_WEB_ROOT:-}/:/var/www/html diff --git a/environments/magento2/magento2.base.yml b/environments/magento2/magento2.base.yml index 5ed7a483..41de4bd4 100644 --- a/environments/magento2/magento2.base.yml +++ b/environments/magento2/magento2.base.yml @@ -36,42 +36,15 @@ services: - traefik.http.services.${WARDEN_ENV_NAME}-varnish.loadbalancer.server.port=80 php-fpm: - hostname: "${WARDEN_ENV_NAME}-php-fpm" - image: quay.io/warden/php-fpm:${PHP_VERSION:-7.3}-magento2 - environment: - - TRAEFIK_DOMAIN - - TRAEFIK_SUBDOMAIN - - SSH_AUTH_SOCK=/tmp/ssh-auth.sock - - NODE_VERSION=${NODE_VERSION:-10} - extra_hosts: - - ${TRAEFIK_DOMAIN}:${TRAEFIK_ADDRESS:-0.0.0.0} - - ${TRAEFIK_SUBDOMAIN:-app}.${TRAEFIK_DOMAIN}:${TRAEFIK_ADDRESS:-0.0.0.0} - depends_on: - - db labels: - - traefik.enable=true - - traefik.http.routers.${WARDEN_ENV_NAME}-livereload.tls=true - - traefik.http.routers.${WARDEN_ENV_NAME}-livereload.priority=2 - - traefik.http.routers.${WARDEN_ENV_NAME}-livereload.rule= - (HostRegexp(`{subdomain:.+}.${TRAEFIK_DOMAIN}`) || Host(`${TRAEFIK_DOMAIN}`)) - && (Path(`/livereload.js`) || Path(`/livereload`)) - - traefik.http.routers.${WARDEN_ENV_NAME}-livereload.service=${WARDEN_ENV_NAME}-livereload - - traefik.http.services.${WARDEN_ENV_NAME}-livereload.loadbalancer.server.port=35729 - - php-debug: - hostname: "${WARDEN_ENV_NAME}-php-debug" - image: quay.io/warden/php-fpm:${PHP_VERSION:-7.3}-magento2-debug - environment: - - TRAEFIK_DOMAIN - - TRAEFIK_SUBDOMAIN - - SSH_AUTH_SOCK=/tmp/ssh-auth.sock - - NODE_VERSION=${NODE_VERSION:-10} - - PHP_IDE_CONFIG=serverName=${WARDEN_ENV_NAME}-docker - extra_hosts: - - ${TRAEFIK_DOMAIN}:${TRAEFIK_ADDRESS:-0.0.0.0} - - ${TRAEFIK_SUBDOMAIN:-app}.${TRAEFIK_DOMAIN}:${TRAEFIK_ADDRESS:-0.0.0.0} - depends_on: - - php-fpm + - traefik.enable=true + - traefik.http.routers.${WARDEN_ENV_NAME}-livereload.tls=true + - traefik.http.routers.${WARDEN_ENV_NAME}-livereload.priority=2 + - traefik.http.routers.${WARDEN_ENV_NAME}-livereload.rule= + (HostRegexp(`{subdomain:.+}.${TRAEFIK_DOMAIN}`) || Host(`${TRAEFIK_DOMAIN}`)) + && (Path(`/livereload.js`) || Path(`/livereload`)) + - traefik.http.routers.${WARDEN_ENV_NAME}-livereload.service=${WARDEN_ENV_NAME}-livereload + - traefik.http.services.${WARDEN_ENV_NAME}-livereload.loadbalancer.server.port=35729 db: hostname: "${WARDEN_ENV_NAME}-mariadb" diff --git a/environments/magento2/magento2.darwin.yml b/environments/magento2/magento2.darwin.yml index 2e5f7a8c..3570b1f6 100644 --- a/environments/magento2/magento2.darwin.yml +++ b/environments/magento2/magento2.darwin.yml @@ -1,27 +1,20 @@ version: "3.5" + +x-volumes: &volumes + - .${WARDEN_WEB_ROOT:-}/pub/media:/var/www/html/pub/media:delegated + - appdata:/var/www/html + services: nginx: environment: - XDEBUG_CONNECT_BACK_HOST=${XDEBUG_CONNECT_BACK_HOST:-host.docker.internal} - volumes: - - .${WARDEN_WEB_ROOT:-}/pub/media:/var/www/html/pub/media:delegated - - appdata:/var/www/html + volumes: *volumes php-fpm: - volumes: - - ${WARDEN_SSL_DIR}/rootca/certs:/etc/ssl/warden-rootca-cert:ro - - ${WARDEN_COMPOSER_DIR}:/home/www-data/.composer:delegated - - /run/host-services/ssh-auth.sock:/run/host-services/ssh-auth.sock - - .${WARDEN_WEB_ROOT:-}/pub/media:/var/www/html/pub/media:delegated - - appdata:/var/www/html + volumes: *volumes php-debug: - volumes: - - ${WARDEN_SSL_DIR}/rootca/certs:/etc/ssl/warden-rootca-cert:ro - - ${WARDEN_COMPOSER_DIR}:/home/www-data/.composer:delegated - - /run/host-services/ssh-auth.sock:/run/host-services/ssh-auth.sock - - .${WARDEN_WEB_ROOT:-}/pub/media:/var/www/html/pub/media:delegated - - appdata:/var/www/html + volumes: *volumes volumes: appdata: diff --git a/environments/magento2/magento2.linux-gnu.yml b/environments/magento2/magento2.linux-gnu.yml index 78393614..a0031f09 100644 --- a/environments/magento2/magento2.linux-gnu.yml +++ b/environments/magento2/magento2.linux-gnu.yml @@ -1,19 +1,14 @@ version: "3.5" + +x-volumes: &volumes + - .${WARDEN_WEB_ROOT:-}/:/var/www/html + services: nginx: - volumes: - - .${WARDEN_WEB_ROOT:-}/:/var/www/html + volumes: *volumes php-fpm: - volumes: - - ${WARDEN_SSL_DIR}/rootca/certs:/etc/ssl/warden-rootca-cert:ro - - ${WARDEN_COMPOSER_DIR}:/home/www-data/.composer - - ${SSH_AUTH_SOCK:-/dev/null}:/run/host-services/ssh-auth.sock - - .${WARDEN_WEB_ROOT:-}/:/var/www/html + volumes: *volumes php-debug: - volumes: - - ${WARDEN_SSL_DIR}/rootca/certs:/etc/ssl/warden-rootca-cert:ro - - ${WARDEN_COMPOSER_DIR}:/home/www-data/.composer - - ${SSH_AUTH_SOCK:-/dev/null}:/run/host-services/ssh-auth.sock - - .${WARDEN_WEB_ROOT:-}/:/var/www/html + volumes: *volumes diff --git a/environments/services/php-fpm.base.yml b/environments/services/php-fpm.base.yml new file mode 100644 index 00000000..12637864 --- /dev/null +++ b/environments/services/php-fpm.base.yml @@ -0,0 +1,30 @@ +version: "3.5" + +x-defaults: &defaults + environment: + - TRAEFIK_DOMAIN + - TRAEFIK_SUBDOMAIN + - SSH_AUTH_SOCK=/tmp/ssh-auth.sock + - NODE_VERSION=${NODE_VERSION:-10} + - PHP_IDE_CONFIG=serverName=${WARDEN_ENV_NAME}-docker + extra_hosts: + - ${TRAEFIK_DOMAIN}:${TRAEFIK_ADDRESS:-0.0.0.0} + - ${TRAEFIK_SUBDOMAIN:-app}.${TRAEFIK_DOMAIN}:${TRAEFIK_ADDRESS:-0.0.0.0} + volumes: + - ${WARDEN_SSL_DIR}/rootca/certs:/etc/ssl/warden-rootca-cert:ro + - ${WARDEN_COMPOSER_DIR}:/home/www-data/.composer:delegated + +services: + php-fpm: + <<: *defaults + hostname: "${WARDEN_ENV_NAME}-php-fpm" + image: quay.io/warden/php-fpm:${PHP_VERSION:-7.3}${WARDEN_SVC_PHP_VARIANT:-} + depends_on: + - db + + php-debug: + <<: *defaults + hostname: "${WARDEN_ENV_NAME}-php-debug" + image: quay.io/warden/php-fpm:${PHP_VERSION:-7.3}${WARDEN_SVC_PHP_VARIANT:-}-debug + depends_on: + - php-fpm diff --git a/environments/services/php-fpm.darwin.yml b/environments/services/php-fpm.darwin.yml new file mode 100644 index 00000000..7a9f8dc1 --- /dev/null +++ b/environments/services/php-fpm.darwin.yml @@ -0,0 +1,8 @@ +version: "3.5" + +x-volumes: &volumes + - /run/host-services/ssh-auth.sock:/run/host-services/ssh-auth.sock + +services: + php-fpm: { volumes: *volumes } + php-debug: { volumes: *volumes } diff --git a/environments/services/php-fpm.linux-gnu.yml b/environments/services/php-fpm.linux-gnu.yml new file mode 100644 index 00000000..9a5ab3e7 --- /dev/null +++ b/environments/services/php-fpm.linux-gnu.yml @@ -0,0 +1,8 @@ +version: "3.5" + +x-volumes: &volumes + - ${SSH_AUTH_SOCK:-/dev/null}:/run/host-services/ssh-auth.sock + +services: + php-fpm: { volumes: *volumes } + php-debug: { volumes: *volumes } diff --git a/utils/env.sh b/utils/env.sh index 91960c88..1e846d82 100644 --- a/utils/env.sh +++ b/utils/env.sh @@ -58,9 +58,11 @@ function assertValidEnvType () { function appendEnvPartialIfExists () { local PARTIAL_NAME="${1}" - local PARTIAL_PATH="${WARDEN_DIR}/environments/${WARDEN_ENV_TYPE}/${WARDEN_ENV_TYPE}.${PARTIAL_NAME}.yml" + local PARTIAL_PATH="${WARDEN_DIR}/environments" - if [[ -f "${PARTIAL_PATH}" ]]; then - DOCKER_COMPOSE_ARGS+=("-f" "${PARTIAL_PATH}") + if [[ -f "${PARTIAL_PATH}/${WARDEN_ENV_TYPE}/${WARDEN_ENV_TYPE}.${PARTIAL_NAME}.yml" ]]; then + DOCKER_COMPOSE_ARGS+=("-f" "${PARTIAL_PATH}/${WARDEN_ENV_TYPE}/${WARDEN_ENV_TYPE}.${PARTIAL_NAME}.yml") + elif [[ -f "${PARTIAL_PATH}/services/${PARTIAL_NAME}.yml" ]]; then + DOCKER_COMPOSE_ARGS+=("-f" "${PARTIAL_PATH}/services/${PARTIAL_NAME}.yml") fi }