Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/eloyekunle/docker-symfony
Symfony Configuration for Docker
https://github.com/eloyekunle/docker-symfony
Last synced: 25 days ago
JSON representation
Symfony Configuration for Docker
- Host: GitHub
- URL: https://github.com/eloyekunle/docker-symfony
- Owner: eloyekunle
- License: mit
- Created: 2017-12-21T12:34:23.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2017-12-22T14:19:14.000Z (about 7 years ago)
- Last Synced: 2024-10-29T10:47:39.198Z (2 months ago)
- Size: 674 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Docker Symfony (PHP7-FPM - NGINX - MySQL - ELK)
[![Build Status](https://travis-ci.org/maxpou/docker-symfony.svg?branch=master)](https://travis-ci.org/maxpou/docker-symfony)
![](doc/schema.png)
Docker-symfony gives you everything you need for developing Symfony application. This complete stack run with docker and [docker-compose (1.7 or higher)](https://docs.docker.com/compose/).
## Installation
1. Create a `.env` from the `.env.dist` file. Adapt it according to your symfony application
```bash
cp .env.dist .env
```2. Build/run containers with (with and without detached mode)
```bash
$ docker-compose build
$ docker-compose up -d
```3. Update your system host file (add symfony.dev)
```bash
# UNIX only: get containers IP address and update host (replace IP according to your configuration) (on Windows, edit C:\Windows\System32\drivers\etc\hosts)
$ sudo echo $(docker network inspect bridge | grep Gateway | grep -o -E '[0-9\.]+') "symfony.dev" >> /etc/hosts
```**Note:** For **OS X**, please take a look [here](https://docs.docker.com/docker-for-mac/networking/) and for **Windows** read [this](https://docs.docker.com/docker-for-windows/#/step-4-explore-the-application-and-run-examples) (4th step).
4. Prepare Symfony app
1. Update app/config/parameters.yml```yml
# path/to/your/symfony-project/app/config/parameters.yml
parameters:
database_host: db
```2. Composer install & create database
```bash
$ docker-compose exec php bash
$ composer install
# Symfony2
$ sf doctrine:database:create
$ sf doctrine:schema:update --force
# Only if you have `doctrine/doctrine-fixtures-bundle` installed
$ sf doctrine:fixtures:load --no-interaction
# Symfony3
$ sf3 doctrine:database:create
$ sf3 doctrine:schema:update --force
# Only if you have `doctrine/doctrine-fixtures-bundle` installed
$ sf3 doctrine:fixtures:load --no-interaction
```5. Enjoy :-)
## Usage
Just run `docker-compose up -d`, then:
* Symfony app: visit [symfony.dev](http://symfony.dev)
* Symfony dev mode: visit [symfony.dev/app_dev.php](http://symfony.dev/app_dev.php)
* Logs (Kibana): [symfony.dev:81](http://symfony.dev:81)
* Logs (files location): logs/nginx and logs/symfony## Customize
If you want to add optionnals containers like Redis, PHPMyAdmin... take a look on [doc/custom.md](doc/custom.md).
## How it works?
Have a look at the `docker-compose.yml` file, here are the `docker-compose` built images:
* `db`: This is the MySQL database container,
* `php`: This is the PHP-FPM container in which the application volume is mounted,
* `nginx`: This is the Nginx webserver container in which application volume is mounted too,
* `elk`: This is a ELK stack container which uses Logstash to collect logs, send them into Elasticsearch and visualize them with Kibana.This results in the following running containers:
```bash
$ docker-compose ps
Name Command State Ports
--------------------------------------------------------------------------------------------------
dockersymfony_db_1 /entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp
dockersymfony_elk_1 /usr/bin/supervisord -n -c ... Up 0.0.0.0:81->80/tcp
dockersymfony_nginx_1 nginx Up 443/tcp, 0.0.0.0:80->80/tcp
dockersymfony_php_1 php-fpm Up 0.0.0.0:9000->9000/tcp
```## Useful commands
```bash
# bash commands
$ docker-compose exec php bash# Composer (e.g. composer update)
$ docker-compose exec php composer update# SF commands (Tips: there is an alias inside php container)
$ docker-compose exec php php /var/www/symfony/app/console cache:clear # Symfony2
$ docker-compose exec php php /var/www/symfony/bin/console cache:clear # Symfony3
# Same command by using alias
$ docker-compose exec php bash
$ sf cache:clear# Retrieve an IP Address (here for the nginx container)
$ docker inspect --format '{{ .NetworkSettings.Networks.dockersymfony_default.IPAddress }}' $(docker ps -f name=nginx -q)
$ docker inspect $(docker ps -f name=nginx -q) | grep IPAddress# MySQL commands
$ docker-compose exec db mysql -uroot -p"root"# F***ing cache/logs folder
$ sudo chmod -R 777 app/cache app/logs # Symfony2
$ sudo chmod -R 777 var/cache var/logs var/sessions # Symfony3# Check CPU consumption
$ docker stats $(docker inspect -f "{{ .Name }}" $(docker ps -q))# Delete all containers
$ docker rm $(docker ps -aq)# Delete all images
$ docker rmi $(docker images -q)
```## FAQ
* Got this error: `ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?
If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.` ?
Run `docker-compose up -d` instead.* Permission problem? See [this doc (Setting up Permission)](http://symfony.com/doc/current/book/installation.html#checking-symfony-application-configuration-and-setup)
* How to config Xdebug?
Xdebug is configured out of the box!
Just config your IDE to connect port `9001` and id key `PHPSTORM`## Contributing
First of all, **thank you** for contributing ♥
If you find any typo/misconfiguration/... please send me a PR or open an issue. You can also ping me on [twitter](https://twitter.com/_maxpou).
Also, while creating your Pull Request on GitHub, please write a description which gives the context and/or explains why you are creating it.