[FTR] Sprit environment configs to separate files (#davidalger/warden/issues/98)

This commit is contained in:
Denis Kopylov committed 2020-02-24 09:10:22 +03:00
1 parent a872a5375d
commit 524fc3b91c
21 files changed
+303 -154

No files matched your search

+1
View File
@@ -1,2 +1,3 @@
/.sync
/Icon?
/.idea
+5
View File
@@ -5,6 +5,11 @@ source "${WARDEN_DIR}/utils/env.sh"
WARDEN_ENV_PATH="$(locateEnvPath)" || exit $?
loadEnvConfig "${WARDEN_ENV_PATH}" || exit $?
if [[ ${WARDEN_MARIADB} -eq 0 ]]; then
echo -e "\033[33mDatabase environment is not used."
exit 1
fi
if (( ${#WARDEN_PARAMS[@]} == 0 )); then
echo -e "\033[33mThis command has required params, please use --help for details."
exit 1
+15
View File
@@ -27,6 +27,10 @@ EOF
if [[ "${WARDEN_ENV_TYPE}" == "magento1" ]]; then
cat >> "${WARDEN_ENV_PATH}/.env" <<-EOT
WARDEN_MARIADB=1
WARDEN_REDIS=1
WARDEN_MAILHOG=1
MARIADB_VERSION=10.3
NODE_VERSION=10
PHP_VERSION=7.2
@@ -46,6 +50,13 @@ fi
if [[ "${WARDEN_ENV_TYPE}" == "magento2" ]]; then
cat >> "${WARDEN_ENV_PATH}/.env" <<-EOT
WARDEN_MARIADB=1
WARDEN_ELASTICSEARCH=1
WARDEN_VARNISH=1
WARDEN_RABBITMQ=1
WARDEN_REDIS=1
WARDEN_MAILHOG=1
BYPASS_VARNISH=false
ELASTICSEARCH_VERSION=6.8
@@ -72,6 +83,10 @@ fi
if [[ "${WARDEN_ENV_TYPE}" == "laravel" ]]; then
cat >> "${WARDEN_ENV_PATH}/.env" <<-EOT
WARDEN_MARIADB=1
WARDEN_REDIS=1
WARDEN_MAILHOG=1
## Laravel Config
APP_URL=http://app.${WARDEN_ENV_NAME}.test
APP_KEY=base64:$(dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64)
+36
View File
@@ -18,6 +18,42 @@ DOCKER_COMPOSE_ARGS=()
DOCKER_COMPOSE_ARGS+=("-f")
DOCKER_COMPOSE_ARGS+=("${WARDEN_DIR}/environments/${WARDEN_ENV_TYPE}.base.yml")
if [[ ${WARDEN_MARIADB} -eq 1 && -f "${WARDEN_DIR}/environments/${WARDEN_ENV_TYPE}.db.base.yml" ]]; then
DOCKER_COMPOSE_ARGS+=("-f")
DOCKER_COMPOSE_ARGS+=("${WARDEN_DIR}/environments/${WARDEN_ENV_TYPE}.db.base.yml")
fi
if [[ ${WARDEN_ELASTICSEARCH} -eq 1 && -f "${WARDEN_DIR}/environments/${WARDEN_ENV_TYPE}.elasticsearch.base.yml" ]]; then
DOCKER_COMPOSE_ARGS+=("-f")
DOCKER_COMPOSE_ARGS+=("${WARDEN_DIR}/environments/${WARDEN_ENV_TYPE}.elasticsearch.base.yml")
fi
if [[ "${WARDEN_ENV_TYPE}" == "magento2" ]]; then
if [[ ${WARDEN_VARNISH} -eq 0 ]]; then
export BYPASS_VARNISH=true
fi
fi
if [[ ${WARDEN_VARNISH} -eq 1 && -f "${WARDEN_DIR}/environments/${WARDEN_ENV_TYPE}.varnish.base.yml" ]]; then
DOCKER_COMPOSE_ARGS+=("-f")
DOCKER_COMPOSE_ARGS+=("${WARDEN_DIR}/environments/${WARDEN_ENV_TYPE}.varnish.base.yml")
fi
if [[ ${WARDEN_RABBITMQ} -eq 1 && -f "${WARDEN_DIR}/environments/${WARDEN_ENV_TYPE}.rabbitmq.base.yml" ]]; then
DOCKER_COMPOSE_ARGS+=("-f")
DOCKER_COMPOSE_ARGS+=("${WARDEN_DIR}/environments/${WARDEN_ENV_TYPE}.rabbitmq.base.yml")
fi
if [[ ${WARDEN_REDIS} -eq 1 && -f "${WARDEN_DIR}/environments/${WARDEN_ENV_TYPE}.redis.base.yml" ]]; then
DOCKER_COMPOSE_ARGS+=("-f")
DOCKER_COMPOSE_ARGS+=("${WARDEN_DIR}/environments/${WARDEN_ENV_TYPE}.redis.base.yml")
fi
if [[ ${WARDEN_MAILHOG=1} -eq 1 && -f "${WARDEN_DIR}/environments/${WARDEN_ENV_TYPE}.mailhog.base.yml" ]]; then
DOCKER_COMPOSE_ARGS+=("-f")
DOCKER_COMPOSE_ARGS+=("${WARDEN_DIR}/environments/${WARDEN_ENV_TYPE}.mailhog.base.yml")
fi
if [[ -f "${WARDEN_DIR}/environments/${WARDEN_ENV_TYPE}.${WARDEN_ENV_SUBT}.yml" ]]; then
DOCKER_COMPOSE_ARGS+=("-f")
DOCKER_COMPOSE_ARGS+=("${WARDEN_DIR}/environments/${WARDEN_ENV_TYPE}.${WARDEN_ENV_SUBT}.yml")
+12
View File
@@ -15,9 +15,21 @@ The versions of MariaDB, Elasticsearch, Varnish, Redis, and NodeJS may also be s
* `RABBITMQ_VERSION`
* `NODE_VERSION`
Start of some environments could be skipped by using variables in `.env` file:
* `WARDEN_MARIADB=0`
* `WARDEN_REDIS=0`
* `WARDEN_MAILHOG=0`
### Magento 2 Specific Customizations
The following variables can be added to the project's `.env` file to enable additional database containers for use with the Magento 2 (Commerce Only) [split-database solution](https://devdocs.magento.com/guides/v2.3/config-guide/multi-master/multi-master.html).
* `WARDEN_SPLIT_SALES=1`
* `WARDEN_SPLIT_CHECKOUT=1`
Start of some Magento 2 specific environments could be skipped by using variables in `.env` file:
* `WARDEN_ELASTICSEARCH=0`
* `WARDEN_VARNISH=0`
* `WARDEN_RABBITMQ=0`
+7
View File
@@ -17,6 +17,13 @@ The below example demonstrates the from-scratch setup of the Magento 2 applicati
WARDEN_ENV_TYPE=magento2
TRAEFIK_DOMAIN=exampleproject.test
TRAEFIK_SUBDOMAIN=app
WARDEN_MARIADB=1
WARDEN_ELASTICSEARCH=1
WARDEN_VARNISH=1
WARDEN_RABBITMQ=1
WARDEN_REDIS=1
WARDEN_MAILHOG=1
BYPASS_VARNISH=false
-34
View File
@@ -29,8 +29,6 @@ services:
- NODE_VERSION=${NODE_VERSION:-10}
extra_hosts:
- ${TRAEFIK_SUBDOMAIN:-app}.${TRAEFIK_DOMAIN}:${TRAEFIK_ADDRESS:-0.0.0.0}
depends_on:
- db
volumes:
- ~/.warden/ssl/rootca/certs:/etc/ssl/warden-rootca-cert:ro
- ~/.composer:/home/www-data/.composer:delegated
@@ -49,8 +47,6 @@ services:
- PHP_IDE_CONFIG=serverName=${WARDEN_ENV_NAME}-docker
extra_hosts:
- ${TRAEFIK_SUBDOMAIN:-app}.${TRAEFIK_DOMAIN}:${TRAEFIK_ADDRESS:-0.0.0.0}
depends_on:
- db
volumes:
- ~/.warden/ssl/rootca/certs:/etc/ssl/warden-rootca-cert:ro
- ~/.composer:/home/www-data/.composer:delegated
@@ -59,36 +55,6 @@ services:
- default
- warden
db:
hostname: "${WARDEN_ENV_NAME}-mariadb"
image: quay.io/warden/mariadb:${MARIADB_VERSION:-10.3}
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-laravel}
- MYSQL_DATABASE=${MYSQL_DATABASE:-laravel}
- MYSQL_USER=${MYSQL_USER:-laravel}
- MYSQL_PASSWORD=${MYSQL_PASSWORD:-laravel}
volumes:
- dbdata:/var/lib/mysql
networks:
- warden
- default
redis:
hostname: "${WARDEN_ENV_NAME}-redis"
image: quay.io/warden/redis:${REDIS_VERSION:-5.0}
mailhog:
hostname: "${WARDEN_ENV_NAME}-mailhog"
image: quay.io/warden/mailhog:${MAILHOG_VERSION:-1.0}
labels:
- traefik.enable=true
- traefik.http.routers.${WARDEN_ENV_NAME}-mailhog.tls=true
- traefik.http.routers.${WARDEN_ENV_NAME}-mailhog.rule=Host(`mailhog.${TRAEFIK_DOMAIN}`)
- traefik.http.services.${WARDEN_ENV_NAME}-mailhog.loadbalancer.server.port=8025
networks:
- warden
- default
volumes:
dbdata:
+30
View File
@@ -0,0 +1,30 @@
version: "3.5"
services:
php-fpm:
depends_on:
- db
php-debug:
depends_on:
- db
db:
hostname: "${WARDEN_ENV_NAME}-mariadb"
image: quay.io/warden/mariadb:${MARIADB_VERSION:-10.3}
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-laravel}
- MYSQL_DATABASE=${MYSQL_DATABASE:-laravel}
- MYSQL_USER=${MYSQL_USER:-laravel}
- MYSQL_PASSWORD=${MYSQL_PASSWORD:-laravel}
volumes:
- dbdata:/var/lib/mysql
networks:
- warden
- default
volumes:
dbdata:
networks:
warden:
external: true
+17
View File
@@ -0,0 +1,17 @@
version: "3.5"
services:
mailhog:
hostname: "${WARDEN_ENV_NAME}-mailhog"
image: quay.io/warden/mailhog:${MAILHOG_VERSION:-1.0}
labels:
- traefik.enable=true
- traefik.http.routers.${WARDEN_ENV_NAME}-mailhog.tls=true
- traefik.http.routers.${WARDEN_ENV_NAME}-mailhog.rule=Host(`mailhog.${TRAEFIK_DOMAIN}`)
- traefik.http.services.${WARDEN_ENV_NAME}-mailhog.loadbalancer.server.port=8025
networks:
- warden
- default
networks:
warden:
external: true
+5
View File
@@ -0,0 +1,5 @@
version: "3.5"
services:
redis:
hostname: "${WARDEN_ENV_NAME}-redis"
image: quay.io/warden/redis:${REDIS_VERSION:-5.0}
-37
View File
@@ -28,8 +28,6 @@ services:
- NODE_VERSION=${NODE_VERSION:-10}
extra_hosts:
- ${TRAEFIK_SUBDOMAIN:-app}.${TRAEFIK_DOMAIN}:${TRAEFIK_ADDRESS:-0.0.0.0}
depends_on:
- db
volumes:
- ~/.warden/ssl/rootca/certs:/etc/ssl/warden-rootca-cert:ro
- ~/.composer:/home/www-data/.composer:delegated
@@ -48,8 +46,6 @@ services:
- PHP_IDE_CONFIG=serverName=${WARDEN_ENV_NAME}-docker
extra_hosts:
- ${TRAEFIK_SUBDOMAIN:-app}.${TRAEFIK_DOMAIN}:${TRAEFIK_ADDRESS:-0.0.0.0}
depends_on:
- db
volumes:
- ~/.warden/ssl/rootca/certs:/etc/ssl/warden-rootca-cert:ro
- ~/.composer:/home/www-data/.composer:delegated
@@ -58,39 +54,6 @@ services:
- default
- warden
db:
hostname: "${WARDEN_ENV_NAME}-mariadb"
image: quay.io/warden/mariadb:${MARIADB_VERSION:-10.3}
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-magento}
- MYSQL_DATABASE=${MYSQL_DATABASE:-magento}
- MYSQL_USER=${MYSQL_USER:-magento}
- MYSQL_PASSWORD=${MYSQL_PASSWORD:-magento}
command:
- mysqld
- --max_allowed_packet=1024M
volumes:
- dbdata:/var/lib/mysql
networks:
- warden
- default
redis:
hostname: "${WARDEN_ENV_NAME}-redis"
image: quay.io/warden/redis:${REDIS_VERSION:-5.0}
mailhog:
hostname: "${WARDEN_ENV_NAME}-mailhog"
image: quay.io/warden/mailhog:${MAILHOG_VERSION:-1.0}
labels:
- traefik.enable=true
- traefik.http.routers.${WARDEN_ENV_NAME}-mailhog.tls=true
- traefik.http.routers.${WARDEN_ENV_NAME}-mailhog.rule=Host(`mailhog.${TRAEFIK_DOMAIN}`)
- traefik.http.services.${WARDEN_ENV_NAME}-mailhog.loadbalancer.server.port=8025
networks:
- warden
- default
volumes:
dbdata:
+33
View File
@@ -0,0 +1,33 @@
version: "3.5"
services:
php-fpm:
depends_on:
- db
php-debug:
depends_on:
- db
db:
hostname: "${WARDEN_ENV_NAME}-mariadb"
image: quay.io/warden/mariadb:${MARIADB_VERSION:-10.3}
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-magento}
- MYSQL_DATABASE=${MYSQL_DATABASE:-magento}
- MYSQL_USER=${MYSQL_USER:-magento}
- MYSQL_PASSWORD=${MYSQL_PASSWORD:-magento}
command:
- mysqld
- --max_allowed_packet=1024M
volumes:
- dbdata:/var/lib/mysql
networks:
- warden
- default
volumes:
dbdata:
networks:
warden:
external: true
+17
View File
@@ -0,0 +1,17 @@
version: "3.5"
services:
mailhog:
hostname: "${WARDEN_ENV_NAME}-mailhog"
image: quay.io/warden/mailhog:${MAILHOG_VERSION:-1.0}
labels:
- traefik.enable=true
- traefik.http.routers.${WARDEN_ENV_NAME}-mailhog.tls=true
- traefik.http.routers.${WARDEN_ENV_NAME}-mailhog.rule=Host(`mailhog.${TRAEFIK_DOMAIN}`)
- traefik.http.services.${WARDEN_ENV_NAME}-mailhog.loadbalancer.server.port=8025
networks:
- warden
- default
networks:
warden:
external: true
+5
View File
@@ -0,0 +1,5 @@
version: "3.5"
services:
redis:
hostname: "${WARDEN_ENV_NAME}-redis"
image: quay.io/warden/redis:${REDIS_VERSION:-5.0}
-83
View File
@@ -18,21 +18,6 @@ services:
- warden
- default
varnish:
hostname: "${WARDEN_ENV_NAME}-varnish"
image: quay.io/warden/varnish:${VARNISH_VERSION:-6.0}
depends_on:
- nginx
labels:
- traefik.enable=true
- traefik.http.routers.${WARDEN_ENV_NAME}-varnish.tls=true
- traefik.http.routers.${WARDEN_ENV_NAME}-varnish.priority=1
- traefik.http.routers.${WARDEN_ENV_NAME}-varnish.rule=HostRegexp(`{subdomain:.+}.${TRAEFIK_DOMAIN}`)
- traefik.http.services.${WARDEN_ENV_NAME}-varnish.loadbalancer.server.port=80
networks:
- warden
- default
php-fpm:
hostname: "${WARDEN_ENV_NAME}-php-fpm"
image: quay.io/warden/php-fpm:${PHP_VERSION:-7.3}-magento2
@@ -42,8 +27,6 @@ services:
- NODE_VERSION=${NODE_VERSION:-10}
extra_hosts:
- ${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
@@ -67,76 +50,10 @@ services:
- PHP_IDE_CONFIG=serverName=${WARDEN_ENV_NAME}-docker
extra_hosts:
- ${TRAEFIK_SUBDOMAIN:-app}.${TRAEFIK_DOMAIN}:${TRAEFIK_ADDRESS:-0.0.0.0}
depends_on:
- db
networks:
- default
- warden
db:
hostname: "${WARDEN_ENV_NAME}-mariadb"
image: quay.io/warden/mariadb:${MARIADB_VERSION:-10.3}
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-magento}
- MYSQL_DATABASE=${MYSQL_DATABASE:-magento}
- MYSQL_USER=${MYSQL_USER:-magento}
- MYSQL_PASSWORD=${MYSQL_PASSWORD:-magento}
command:
- mysqld
- --max_allowed_packet=1024M
- --explicit_defaults_for_timestamp=on
volumes:
- dbdata:/var/lib/mysql
networks:
- warden
- default
elasticsearch:
hostname: "${WARDEN_ENV_NAME}-elasticsearch"
image: quay.io/warden/elasticsearch:${ELASTICSEARCH_VERSION:-6.8}
labels:
- traefik.enable=true
- traefik.http.routers.${WARDEN_ENV_NAME}-elasticsearch.tls=true
- traefik.http.routers.${WARDEN_ENV_NAME}-elasticsearch.rule=Host(`elasticsearch.${TRAEFIK_DOMAIN}`)
- traefik.http.services.${WARDEN_ENV_NAME}-elasticsearch.loadbalancer.server.port=9200
environment:
- discovery.type=single-node
- xpack.security.enabled=false
- "ES_JAVA_OPTS=-Xms64m -Xmx512m"
volumes:
- esdata:/usr/share/elasticsearch/data
networks:
- warden
- default
redis:
hostname: "${WARDEN_ENV_NAME}-redis"
image: quay.io/warden/redis:${REDIS_VERSION:-5.0}
rabbitmq:
hostname: "${WARDEN_ENV_NAME}-rabbitmq"
image: quay.io/warden/rabbitmq:${RABBITMQ_VERSION:-3.7}
labels:
- traefik.enable=true
- traefik.http.routers.${WARDEN_ENV_NAME}-rabbitmq.tls=true
- traefik.http.routers.${WARDEN_ENV_NAME}-rabbitmq.rule=Host(`rabbitmq.${TRAEFIK_DOMAIN}`)
- traefik.http.services.${WARDEN_ENV_NAME}-rabbitmq.loadbalancer.server.port=15672
networks:
- warden
- default
mailhog:
hostname: "${WARDEN_ENV_NAME}-mailhog"
image: quay.io/warden/mailhog:${MAILHOG_VERSION:-1.0}
labels:
- traefik.enable=true
- traefik.http.routers.${WARDEN_ENV_NAME}-mailhog.tls=true
- traefik.http.routers.${WARDEN_ENV_NAME}-mailhog.rule=Host(`mailhog.${TRAEFIK_DOMAIN}`)
- traefik.http.services.${WARDEN_ENV_NAME}-mailhog.loadbalancer.server.port=8025
networks:
- warden
- default
volumes:
dbdata:
esdata:
+35
View File
@@ -0,0 +1,35 @@
version: "3.5"
services:
php-fpm:
depends_on:
- db
php-debug:
depends_on:
- db
db:
hostname: "${WARDEN_ENV_NAME}-mariadb"
image: quay.io/warden/mariadb:${MARIADB_VERSION:-10.3}
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-magento}
- MYSQL_DATABASE=${MYSQL_DATABASE:-magento}
- MYSQL_USER=${MYSQL_USER:-magento}
- MYSQL_PASSWORD=${MYSQL_PASSWORD:-magento}
command:
- mysqld
- --max_allowed_packet=1024M
- --explicit_defaults_for_timestamp=on
volumes:
- dbdata:/var/lib/mysql
networks:
- warden
- default
volumes:
dbdata:
esdata:
networks:
warden:
external: true
@@ -0,0 +1,26 @@
version: "3.5"
services:
elasticsearch:
hostname: "${WARDEN_ENV_NAME}-elasticsearch"
image: quay.io/warden/elasticsearch:${ELASTICSEARCH_VERSION:-6.8}
labels:
- traefik.enable=true
- traefik.http.routers.${WARDEN_ENV_NAME}-elasticsearch.tls=true
- traefik.http.routers.${WARDEN_ENV_NAME}-elasticsearch.rule=Host(`elasticsearch.${TRAEFIK_DOMAIN}`)
- traefik.http.services.${WARDEN_ENV_NAME}-elasticsearch.loadbalancer.server.port=9200
environment:
- discovery.type=single-node
- xpack.security.enabled=false
- "ES_JAVA_OPTS=-Xms64m -Xmx512m"
volumes:
- esdata:/usr/share/elasticsearch/data
networks:
- warden
- default
volumes:
esdata:
networks:
warden:
external: true
+17
View File
@@ -0,0 +1,17 @@
version: "3.5"
services:
mailhog:
hostname: "${WARDEN_ENV_NAME}-mailhog"
image: quay.io/warden/mailhog:${MAILHOG_VERSION:-1.0}
labels:
- traefik.enable=true
- traefik.http.routers.${WARDEN_ENV_NAME}-mailhog.tls=true
- traefik.http.routers.${WARDEN_ENV_NAME}-mailhog.rule=Host(`mailhog.${TRAEFIK_DOMAIN}`)
- traefik.http.services.${WARDEN_ENV_NAME}-mailhog.loadbalancer.server.port=8025
networks:
- warden
- default
networks:
warden:
external: true
+17
View File
@@ -0,0 +1,17 @@
version: "3.5"
services:
rabbitmq:
hostname: "${WARDEN_ENV_NAME}-rabbitmq"
image: quay.io/warden/rabbitmq:${RABBITMQ_VERSION:-3.7}
labels:
- traefik.enable=true
- traefik.http.routers.${WARDEN_ENV_NAME}-rabbitmq.tls=true
- traefik.http.routers.${WARDEN_ENV_NAME}-rabbitmq.rule=Host(`rabbitmq.${TRAEFIK_DOMAIN}`)
- traefik.http.services.${WARDEN_ENV_NAME}-rabbitmq.loadbalancer.server.port=15672
networks:
- warden
- default
networks:
warden:
external: true
+5
View File
@@ -0,0 +1,5 @@
version: "3.5"
services:
redis:
hostname: "${WARDEN_ENV_NAME}-redis"
image: quay.io/warden/redis:${REDIS_VERSION:-5.0}
+20
View File
@@ -0,0 +1,20 @@
version: "3.5"
services:
varnish:
hostname: "${WARDEN_ENV_NAME}-varnish"
image: quay.io/warden/varnish:${VARNISH_VERSION:-6.0}
depends_on:
- nginx
labels:
- traefik.enable=true
- traefik.http.routers.${WARDEN_ENV_NAME}-varnish.tls=true
- traefik.http.routers.${WARDEN_ENV_NAME}-varnish.priority=1
- traefik.http.routers.${WARDEN_ENV_NAME}-varnish.rule=HostRegexp(`{subdomain:.+}.${TRAEFIK_DOMAIN}`)
- traefik.http.services.${WARDEN_ENV_NAME}-varnish.loadbalancer.server.port=80
networks:
- warden
- default
networks:
warden:
external: true