carlosas
docker-for-symfony
Dockerfile

Docker stack for Symfony 4 - NGINX / PHP7-FPM / MySQL / ELK / Redis / RabbitMQ

Last updated Mar 27, 2025
87
Stars
30
Forks
0
Issues
0
Stars/day
Attention Score
26
Language breakdown
Dockerfile 100.0%
Files click to expand
README

Docker stack for Symfony projects

Build Status :octocat: license contributions HitCount

Basic info

Previous requirements

This stack needs docker and docker-compose to be installed.

Installation

  • 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.maxmapcount=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
1. Update Symfony env variables (.env)
#...
        DATABASEURL=mysql://dbuser:dbpassword@mysql:3306/dbname
        #...

2. 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

How does it work?

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

Usage

Once all the containers are up, our services are available at:

  • Symfony app: http://symfony.dev:80
  • Mysql server: symfony.dev:3306
  • Redis: symfony.dev:6379
  • Elasticsearch: symfony.dev:9200
  • Kibana: http://symfony.dev:5601
  • RabbitMQ: http://symfony.dev:15672
Log files location: logs/nginx and logs/symfony*

:tada: 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

🔗 More in this category

© 2026 GitRepoTrend · carlosas/docker-for-symfony · Updated daily from GitHub