diff --git a/.vscode/settings.json b/.vscode/settings.json index 9693e85..4240132 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 7926f9f..6ac85cf 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 5f241e6..94b1133 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 95c36ef..0f16fa5 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 6327a35..1ca1f35 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 64a7dc0..4bc355a 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 5ed7a48..41de4bd 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 2e5f7a8..3570b1f 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 7839361..a0031f0 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 0000000..1263786 --- /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 0000000..7a9f8dc --- /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 0000000..9a5ab3e --- /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 91960c8..1e846d8 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 }