:octocat:
This stack needs docker and docker-compose to be installed.
Create a .env
file from .env.dist
and adapt it according to the needs of the application
$ cp .env.dist .env && nano .env
Due to an Elasticsearch 6 requirement, we may need to set a host's sysctl option and restart (More info):
$ sudo sysctl -w vm.max_map_count=262144
Build and run the stack in detached mode (stop any system's ngixn/apache2 service first)
$ docker-compose build
$ docker-compose up -d
Get the bridge IP address
$ docker network inspect bridge | grep Gateway | grep -o -E '[0-9\.]+'
# OR an alternative command
$ ifconfig docker0 | awk '/inet:/{ print substr($2,6); exit }'
Update your system's hosts file with the IP retrieved in step 3
Prepare the Symfony application
Update Symfony env variables (.env)
#...
DATABASE_URL=mysql://db_user:db_password@mysql:3306/db_name
#...
Composer install & update the schema from the container
$ docker-compose exec php bash
$ composer install
$ symfony doctrine:schema:update --force
(Optional) Xdebug: Configure your IDE to connect to port 9001
with key PHPSTORM
We have the following docker-compose built images:
nginx
: The Nginx webserver container in which the application volume is mounted.php
: The PHP-FPM container in which the application volume is mounted too.mysql
: The MySQL database container.elk
: Container which uses Logstash to collect logs, send them into Elasticsearch and visualize them with Kibana.redis
: The Redis server container.rabbitmq
: The RabbitMQ server/administration container.Running docker-compose ps
should result in the following running containers:
Name Command State Ports
--------------------------------------------------------------------------------------------------
container_mysql /entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp
container_nginx nginx Up 443/tcp, 0.0.0.0:80->80/tcp
container_phpfpm php-fpm Up 0.0.0.0:9000->9000/tcp
container_redis docker-entrypoint.sh redis ... Up 6379/tcp
container_rabbit rabbitmq:3-management Up 4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, 15671/tcp, 25672/tcp, 0.0.0.0:15672->15672
container_elk /usr/bin/supervisord -n -c ... Up 0.0.0.0:5044->5044/tcp, 0.0.0.0:5601->5601/tcp, 0.0.0.0:9200->9200/tcp, 9300/tcp
Once all the containers are up, our services are available at:
http://symfony.dev:80
symfony.dev:3306
symfony.dev:6379
symfony.dev:9200
http://symfony.dev:5601
http://symfony.dev:15672
🎉 Now we can stop our stack with docker-compose down
and start it again with docker-compose up -d
Software based on eko/docker-symfony and maxpou/docker-symfony