#!/bin/bash set -o errexit MEM=$(docker info | grep "Total Memory" | cut -d':' -f2 | xargs | sed s/GiB//) # Docker reports RAM 0.2 less than what it is actually set to (( $(echo "$MEM < 5.8" | bc -l) )) && echo "There must be at least 6GB of RAM allocated to Docker to continue." && exit # shellcheck source=../env/db.env source env/db.env # shellcheck source=../env/elasticsearch.env source env/elasticsearch.env # shellcheck source=../env/magento.env source env/magento.env # shellcheck source=../env/rabbitmq.env source env/rabbitmq.env DOMAIN=${1:-magento.test} bin/stop docker-compose -f docker-compose.yml up -d [ $? != 0 ] && echo "Failed to start Docker services" && exit bin/clinotty chmod u+x bin/magento rm -rf src && mkdir src echo "Waiting for connection to Elasticsearch..." bin/clinotty timeout $ES_HEALTHCHECK_TIMEOUT bash -c " until curl --silent --output /dev/null http://$ES_HOST:$ES_PORT/_cat/health?h=st; do printf '.' sleep 2 done" [ $? != 0 ] && echo "Failed to connect to Elasticsearch" && exit echo "" echo "Waiting for connection to RabbitMQ..." bin/clinotty timeout $RABBITMQ_HEALTHCHECK_TIMEOUT bash -c " until curl --silent --output /dev/null http://$RABBITMQ_DEFAULT_USER:$RABBITMQ_DEFAULT_PASS@$RABBITMQ_HOST:$RABBITMQ_MANAGEMENT_PORT/api/aliveness-test/%2F; do printf '.' sleep 2 done" [ $? != 0 ] && echo "Failed to connect to RabbitMQ" && exit bin/clinotty bin/magento setup:install \ --db-host="$MYSQL_HOST" \ --db-name="$MYSQL_DATABASE" \ --db-user="$MYSQL_USER" \ --db-password="$MYSQL_PASSWORD" \ --base-url=https://"$DOMAIN"/ \ --base-url-secure=https://"$DOMAIN"/ \ --backend-frontname="$MAGENTO_ADMIN_FRONTNAME" \ --admin-firstname="$MAGENTO_ADMIN_FIRST_NAME" \ --admin-lastname="$MAGENTO_ADMIN_LAST_NAME" \ --admin-email="$MAGENTO_ADMIN_EMAIL" \ --admin-user="$MAGENTO_ADMIN_USER" \ --admin-password="$MAGENTO_ADMIN_PASSWORD" \ --language="$MAGENTO_LOCALE" \ --currency="$MAGENTO_CURRENCY" \ --timezone="$MAGENTO_TIMEZONE" \ --amqp-host="$RABBITMQ_HOST" \ --amqp-port="$RABBITMQ_PORT" \ --amqp-user="$RABBITMQ_DEFAULT_USER" \ --amqp-password="$RABBITMQ_DEFAULT_PASS" \ --amqp-virtualhost="$RABBITMQ_DEFAULT_VHOST" \ --cache-backend=redis \ --cache-backend-redis-server=redis \ --cache-backend-redis-db=0 \ --page-cache=redis \ --page-cache-redis-server=redis \ --page-cache-redis-db=1 \ --session-save=redis \ --session-save-redis-host=redis \ --session-save-redis-log-level=4 \ --session-save-redis-db=2 \ --search-engine=elasticsearch7 \ --elasticsearch-host=$ES_HOST \ --elasticsearch-port=$ES_PORT \ --use-rewrites=1 \ --no-interaction echo "Copying files from container to host after install..." bin/copyfromcontainer --all echo "Forcing deploy of static content to speed up initial requests..." bin/clinotty bin/magento setup:static-content:deploy -f echo "Re-indexing with Elasticsearch..." bin/clinotty bin/magento indexer:reindex echo "Setting basic URL and generating SSL certificate..." bin/setup-domain "${DOMAIN}" echo "Clearing the cache to apply updates..." bin/clinotty bin/magento cache:flush echo "Installing cron, run 'bin/cron start' to enable..." bin/clinotty bin/magento cron:install echo "Turning on developer mode..." bin/clinotty bin/magento deploy:mode:set developer mv .vscode src/ echo "Docker development environment setup complete." echo "You may now access your Magento instance at https://${DOMAIN}/"