Docker development environment for staging Magento 1 & Magento 2 on Alpine 3.6
The docker containers within this repository were build for development purposes only and should NOT be used in production. This product is licensed under the MIT LICENSE and comes with no warranty, use at your own risk.
redis
redis/Dockerfilevarnish
varnish/Dockerfilenginx
nginx/Dockerfilemysql
mysql/Dockerfilephp-fpm-5.6
php-fpm-5.6/Dockerfilephp-cli-5.6
php-cli-5.6/Dockerfilephp-cron-5.6
php-cron-5.6/Dockerfilephp-fpm-7.1
php-fpm-7.1/Dockerfilephp-cli-7.1
php-cli-7.1/Dockerfilephp-cron-7.1
php-cron-7.1/Dockerfile
Using shared volumes on MacOS with Docker is painfully slow. That is why we use docker-sync for sharing volumes with and between docker containers. While this solution has a slightly longer initial up-time, it makes up for it when the containers are started and initially synced. We also use docker-compose to build/run our docker containers because of it's simplicity. Sample docker-compose files for Magento 1 and Magento 2 can be found in the dist directory. Similarly, there is a docker-sync.yml file that can be used alongside either configuration. Assuming that your Magento installation lives in public_html of your project folder, and the appropriate docker-compose.yml and docker-sync.yml files are found in the same directory, then you can start docker-sync and run the docker containers using the following sequence of commands:
docker-sync start
docker-compose up -d
Shutting them down is just as easy:
docker-compose down
docker-sync stop
docker-sync clean # Only if not starting again
All docker images, except for the php-cli containers, have the ability to tail their container's relevant logs if the VERBOSE=true
flag is passed as an environmental variable. Passing it to the container is optional since by default VERBOSE=false
. It is explicitly stated within the sample docker-compose.yml file for documentation purposes only. Please also note that you will only be able to see the verbose output of these containers if you run docker-compose without the detach flag, i.e. docker-compose up
.
Below are the possible environment variable that can be passed to the mysql docker container with some sample values. If non are passed, then only the root user will exist with the default password of mysql.
MYSQL_ROOT_PASSWORD=mysql
MYSQL_USER_NAME=magento_db_user
MYSQL_USER_PASSWORD=password123
MYSQL_DATABASE=magento
When NGINX starts, it copies the appropriate configuration file so it can be used. This configuration file is determined by the environment variable below. If no variable is passed then the below value is set.
MAGENTO_VERSION=2
Building our docker images is easy since we use docker-compose to do it for us. Simply run docker-compose -f build.yml build
to build the docker containers from source. Once built, and with proper permission, feel free to push them to docker using docker push jetrails/magento-alpine:<tag>
.
If any issues come up or any feature are requested, please feel free to open up an issue through Github. For all other inquiries, feel free to email us at development@jetrails.com.