Skip to content

mahbub-zip/Magento-2-docker-configuration

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

149 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Docker Configuration for Magento 2

Deploy secure and flexible docker infrastructure for Magento 2 in a matter of seconds.


🚀 Deploy your project:

  • Install Docker:

you can use any linux host or Docker Desktop
https://docs.docker.com/
https://docs.docker.com/engine/install/debian/

    curl -fsSL https://get.docker.com -o get-docker.sh
    curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    bash get-docker.sh
    chmod +x /usr/local/bin/docker-compose
  • Create deployment directory:
  mkdir magento && cd magento
  • Clone repo:
  git clone https://github.com/magenx/Magento-2-docker-configuration.git .
  • To avoid copying default passwords and hacking through open ports - generate new passwords:

https://docs.docker.com/compose/compose-file/compose-file-v3/#secrets

   bash passgen.sh

[ ! ] Check all data, adjust your settings, edit your variables

  • Run to pull and build images and start containers:

to enable buildkit:
echo '{ "features": { "buildkit": true } }' > /etc/docker/daemon.json
export DOCKER_BUILDKIT=1

   docker-compose build --no-cache php
   
   docker-compose build \
        --build-arg magento \
        --build-arg nginx
        
   docker-compose up -d
  • Watch syslog for errors and issues:
   tail -f /var/log/syslog

  • Get random mariadb root password from log:
docker-compose logs mariadb 2>&1 | grep GENERATED
magenx-mariadb   | 2021-11-16 08:48:17-05:00 [Note] [Entrypoint]: GENERATED ROOT PASSWORD: m5.QyKl.PS8o<Yx|Jv(~DV&9cY-`i~XZ

  • Example how to run composer or magento command from host:

magento entrypoint is n98-magerun2 script, looks like providing more commands and options

   docker-compose run --rm composer update
   docker-compose run --rm magento module:status --enabled
   docker-compose run --rm magento module:disable Magento_TwoFactorAuth

  • Source variables and issue magento installation command:
    docker-compose run --rm magento setup:install --base-url=${DOMAIN} \
   --db-host=mariadb \
   --db-name=${MARIADB_NAME} \
   --db-user=${MARIADB_USER} \
   --db-password='${MARIADB_PASSWORD}' \
   --admin-firstname=${ADMIN_FIRSTNAME} \
   --admin-lastname=${ADMIN_LASTNAME} \
   --admin-email=${ADMIN_EMAIL} \
   --admin-user=${ADMIN_LOGIN} \
   --admin-password='${ADMIN_PASSWORD}' \
   --language=${LOCALE} \
   --currency=${CURRENCY} \
   --timezone=${TIMEZONE} \
   --cleanup-database \
   --cache-backend=redis \
   --cache-backend-redis-server=redis-cache \
   --cache-backend-redis-port=6380 \
   --cache-backend-redis-db=0 \
   --cache-backend-redis-compress-data=1 \
   --cache-backend-redis-compression-lib=gzip \
   --cache-backend-redis-password='${REDIS_PASSWORD}' \
   --session-save=redis \
   --session-save-redis-host=redis-session \
   --session-save-redis-port=6379 \
   --session-save-redis-log-level=3 \
   --session-save-redis-db=0 \
   --session-save-redis-compression-lib=gzip \
   --session-save-redis-password='${REDIS_PASSWORD}' \
   --use-rewrites=1 \
   --amqp-host=rabbitmq \
   --amqp-port=5672 \
   --amqp-user=magento \
   --amqp-password='${RABBITMQ_PASSWORD}' \
   --amqp-virtualhost='/' \
   --consumers-wait-for-messages=0 \
   --search-engine=elasticsearch7 \
   --elasticsearch-host=elasticsearch \
   --elasticsearch-port=9200 \
   --elasticsearch-enable-auth=1 \
   --elasticsearch-username=elastic \
   --elasticsearch-password='${ELASTIC_PASSWORD}'

  • Stop all services:
   docker-compose down
   
   Stopping magenx-cron          ... done
   Stopping magenx-nginx         ... done
   Stopping magenx-php           ... done
   Stopping magenx-magento       ... done
   Stopping magenx-elasticsearch ... done
   Stopping magenx-rabbitmq      ... done
   Stopping magenx-varnish       ... done
   Stopping magenx-certbot       ... done
   Stopping magenx-nodejs        ... done
   Stopping magenx-phpmyadmin    ... done
   Stopping magenx-mariadb       ... done
   Stopping magenx-redis         ... done

🛠️ Stack components in use:

  • MariaDB - MariaDB Server is a high performing open source relational database, forked from MySQL.
  • Nginx - Official build of Nginx.
  • PHP - PHP scripting language.
  • Varnish - Varnish is an HTTP accelerator designed for content-heavy dynamic web sites as well as APIs.
  • ElasticSearch - Elasticsearch is a powerful open source search and analytics engine that makes data easy to explore.
  • Redis x2 - Redis is an open source key-value store that functions as a data structure server.
  • RabbitMQ - RabbitMQ is an open source multi-protocol messaging broker.
  • NodeJS - Node.js is a JavaScript-based platform for server-side and networking applications.
  • PHPMyAdmin - phpMyAdmin - A web interface for MySQL and MariaDB.
  • Certbot - Official build of EFF's Certbot tool for obtaining TLS/SSL certificates from Let's Encrypt.
  • [Composer]
  • [Cron]

About

Docker Configuration for Magento 2. Deploy secure, flexible and reusable docker infrastructure for Magento 2 in a matter of seconds.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Dockerfile 53.4%
  • VCL 37.5%
  • Shell 9.1%