Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ityetti/magento2-docker
Magento 2 Docker to Development (Apple Silicon): Traefik + Nginx + Redis + PHP-FPM + MySQL + xDebug + Mailpit + RabbitMQ + OpenSearch + Varnish
https://github.com/ityetti/magento2-docker
apple-silicon-support applesilicon docker docker-compose magento magento2 mailpit mysql nginx opensearch opensearch-dashboards php redis traefik varnish
Last synced: about 15 hours ago
JSON representation
Magento 2 Docker to Development (Apple Silicon): Traefik + Nginx + Redis + PHP-FPM + MySQL + xDebug + Mailpit + RabbitMQ + OpenSearch + Varnish
- Host: GitHub
- URL: https://github.com/ityetti/magento2-docker
- Owner: ityetti
- License: mit
- Created: 2019-07-05T21:00:16.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-12-10T21:28:03.000Z (15 days ago)
- Last Synced: 2024-12-10T22:25:06.587Z (15 days ago)
- Topics: apple-silicon-support, applesilicon, docker, docker-compose, magento, magento2, mailpit, mysql, nginx, opensearch, opensearch-dashboards, php, redis, traefik, varnish
- Language: VCL
- Homepage: https://github.com/ityetti/magento2-docker
- Size: 128 KB
- Stars: 25
- Watchers: 4
- Forks: 12
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
README
![Magento 2](https://cdn.rawgit.com/rafaelstz/magento2-snippets-visualstudio/master/images/icon.png)
# Magento 2 Docker to Development (Apple Silicon)
### Traefik + Nginx + Redis + PHP-FPM + MySQL + XDebug + Mailpit + RabbitMQ + OpenSearch + Varnish
The docker stack is composed of the following containers
| Name | Version |
|----------------------|---------|
| traefik | 3.2 |
| nginx | 1.22 |
| php-fpm | 8.2 |
| php-fpm-xdebug | 3.2.2 |
| redis | 7.0 |
| mysql | 8.0.34 |
| mailpit | 1.21 |
| rabbitmq | 3.11 |
| opensearch | 2.5.0 |
| opensearch-dashboard | 2.5.0 |
| varnish | 7.3 |### Container traefik
Starts a reverse proxy and load balancer for project
Opens local port: `80`, `443`### Container nginx
Builds from the nginx folder.
Mounts the folder magento2 from the project main folder into the container volume `/home/magento`.### Container php-fpm
Builds from the php-fpm folder.
Mounts the folder magento2 from the project main folder into the container volume `/home/magento`.
This container includes all dependencies for Magento 2.### Container php-fpm-xdebug
Builds from the php-fpm-xdebug folder.
Mounts the folder magento2 from the project main folder into the container volume `/home/magento`.
This container includes all dependencies for Magento 2 (also contain xDebug).### Container redis:
Starts a redis container.### Container mysql:
Please change or set the mysql environment variables
MYSQL_DATABASE: 'xxxx'
MYSQL_ROOT_PASSWORD: 'xxxx'
MYSQL_USER: 'xxxx'
MYSQL_PASSWORD: 'xxxx'
MYSQL_ALLOW_EMPTY_PASSWORD: 'xxxxx'Default values:
MYSQL_DATABASE: 'magento_db'
MYSQL_ROOT_PASSWORD: 'root_pass'
MYSQL_USER: 'magento_user'
MYSQL_PASSWORD: 'PASSWD#'
MYSQL_ALLOW_EMPTY_PASSWORD: 'false'Opens up port: `3306`
Note: On your host, port 3306 might already be in use. So before running docker-compose.yml, under the docker-compose.yml's mysql section change the host's port number to something other than 3306, select any as long as that port is not already being used locally on your machine.
### Container mailpit:
Starts a mailpit container.
Opens up port: `8025`### Container rabbitmq:
Starts a rabbitmq container.
Opens up port: `15672`### Container opensearch:
Starts an opensearch container.### Container opensearch-dashboard:
Starts an opensearch dashboard container.
Opens up port: `5601`### Container varnish:
Builds from the varnish folder.
Starts a varnish container.
Opens up port: `6081`## Setup
Copy your `.env.sample` to `.env` file in root folder, and change `PROJECT_NAME` and `PROJECT_VIRTUAL_HOST`:
`PROJECT_NAME` - help you to create simple and clear container names.
`PROJECT_VIRTUAL_HOST` - it is your main url address.For example:
PROJECT_NAME=magento2
PROJECT_VIRTUAL_HOST=magento2.testEdit your `/etc/hosts` and add next line:
`127.0.0.1 magento2.test traefik.magento2.test mail.magento2.test search.magento2.test dashboard.magento2.test rabbit.magento2.test`To start/build the stack.
Use - `docker-compose up` or `docker-compose up -d` to run the container on detached mode.
Compose will take some time to execute.
After the build has finished you can press the ctrl+c and docker-compose stop all containers.## Installing Magento
You will check the latest version of Magento from link: https://magento.com/tech-resources/download
To the run installation process use next commands.
Create new project:./scripts/composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition=2.4.7-p3 /home/magento
Install project (don't forget to change **--base-url** to yours):./scripts/magento setup:install --base-url=https://magento2.test/ --db-host=mysql --db-name=magento_db --db-user=magento_user --db-password="PASSWD#" --admin-firstname=admin --admin-lastname=admin [email protected] --admin-user=admin --admin-password=admin1! --language=en_US --currency=USD --timezone=America/Chicago --use-rewrites=1 --opensearch-host=opensearch --opensearch-port=9200 --search-engine=opensearch
## Setting up Magento
To access the magento homepage, go to the following url: https://magento2.testStoring sessions and cache in redis.
##### As reference, you could use `env.php.magento.sample`
#### Setting up the configuration for sessions.
```php
'session' => [
'save' => 'redis',
'redis' => [
'host' => 'redis',
'port' => '6379',
'password' => '',
'timeout' => '2.5',
'persistent_identifier' => '',
'database' => '2',
'compression_threshold' => '2048',
'compression_library' => 'gzip',
'log_level' => '1',
'max_concurrency' => '6',
'break_after_frontend' => '5',
'break_after_adminhtml' => '30',
'first_lifetime' => '600',
'bot_first_lifetime' => '60',
'bot_lifetime' => '7200',
'disable_locking' => '0',
'min_lifetime' => '60',
'max_lifetime' => '2592000'
]
]
```#### Setting up the configuration for cache.
```php
'cache' => [
'frontend' => [
'default' => [
'id_prefix' => '777_',
'backend' => 'Cm_Cache_Backend_Redis',
'backend_options' => [
'server' => 'redis',
'database' => '0',
'port' => '6379',
'compress_data' => '1',
'compress_tags' => '1'
]
],
'page_cache' => [
'id_prefix' => '777_',
'backend' => 'Cm_Cache_Backend_Redis',
'backend_options' => [
'server' => 'redis',
'port' => '6379',
'database' => '1',
'compress_data' => '0'
]
]
],
'allow_parallel_generation' => false
],
```#### Don't forget to add `http_cache_hosts` to correct the varnish purge.
```php
'http_cache_hosts' => [
[
'host' => 'nginx',
'port' => '8080'
]
]
```## How to use xDebug
You could enable or disable xDebug with the next command: `./scripts/switch_mode [fpm|xdebug]`
`fpm` - Enable container without xDebug
`xdebug` - Enable container with xDebugAlso, you can open:
https://traefik.magento2.test - **Traefik Dashboard** (traefik/traefik123 for access)
https://mail.magento2.test - **Mailpit**
https://search.magento2.test - **OpenSearch**
https://dashboard.magento2.test - **OpenSearch Dashboard**
https://rabbit.magento2.test - **RabbitMQ** (guest/guest for access)## Feature Updates
- v1.0.0 - Stable release
- v1.0.1 - Updated to PHP 7.4.x, added docker-sync for macOS users
- v1.0.2 - Fix xDebug, add rabbitmq management, fix email sending
- v1.0.3 - Updated to PHP 8.1.x
- v1.0.4 - Fix xDebug for stable work
- v1.0.5 - Replace Elasticsearch to OpenSearch, upgrade component versions, added varnish
- v1.0.6 - Fix xDebug for correct stopping at point
- v1.0.7 - Add traefik, optimization for varnish, remove nginx-proxy
- v1.0.8 - Replace mailhog to mailpit
- v1.0.9 - Add n98-magerun2
- v1.1.0 - Add a switcher for PHP that enables or disables xDebug
- v1.1.1 - Fixed to avoid the proxying cycle between varnish and nginx.## Branches
| Name | Magento versions |
|----------------------|----------------------------------------|
| master | 2.4.6 and higher |
| m244 | 2.4.4 up to 2.4.6 |
| develop | like master with untested improvements |