Skip to content

Update to v2 #3

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 8 commits into from
Jun 28, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
/logs
/symfony
/.data
17 changes: 14 additions & 3 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,19 +1,30 @@
sudo: required

env:
DOCKER_COMPOSE_VERSION: 1.4.2
DOCKER_COMPOSE_VERSION: 1.7.1

services:
- docker

before_install:
- mkdir symfony
# docker install
- sudo sh -c 'echo "deb https://apt.dockerproject.org/repo ubuntu-precise main" > /etc/apt/sources.list.d/docker.list'
- sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
- sudo apt-get update
- sudo apt-key update
- sudo apt-get -qqy -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" install docker-engine=1.11.1-0~precise
- sudo rm /usr/local/bin/docker-compose
- curl -L https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-`uname -s`-`uname -m` > docker-compose
- chmod +x docker-compose
- sudo mv docker-compose /usr/local/bin
- docker-compose -v
- docker -v
# symfony application folder
- mkdir symfony
- line_old='../../sites/lab/symfony-rest-beer-edition:/var/www/symfony'
- line_new='symfony:/var/www/symfony'
- sed -i "s%$line_old%$line_new%g" docker-compose.yml

script:
- docker-compose up -d
- docker-compose ps

99 changes: 68 additions & 31 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,27 @@

[![Build Status](https://travis-ci.org/maxpou/docker-symfony.svg?branch=master)](https://travis-ci.org/maxpou/docker-symfony)

*Credit: this is a kind of fork from [eko/docker-symfony](https://github.com/eko/docker-symfony). Thanks to him :-)*
![](http://www.maxpou.fr/images/articles/symfony-docker/schema-v2.png)

![](http://www.maxpou.fr/images/articles/symfony-docker/schema.png)
Docker-symfony gives you everything you need for developing Symfony application. This complete stack run with docker and [docker-compose](https://docs.docker.com/compose/).

## Installation

1. Retrieve git project

```bash
$ git clone git@github.com:maxpou/docker-symfony.git
$ git clone https://github.com/maxpou/docker-symfony
```

2. In the docker-compose file, indicate where's your Symfony project

```yml
services:
php:
volumes:
- path/to/your/symfony-project:/var/www/symfony
```

2. Move your Symfony project into symfony folder
3. Build containers with (with and without detached mode)

```bash
Expand All @@ -27,9 +35,12 @@
```bash
# get containers IP address and update host (replace IP according to your configuration)
$ docker inspect --format '{{ .NetworkSettings.IPAddress }}' $(docker ps -f name=nginx -q)
# unix only (on Windows, edit C:\Windows\System32\drivers\etc\hosts)
$ sudo echo "171.17.0.1 symfony.dev" >> /etc/hosts
```

**Note:** If it's empty, run `docker inspect $(docker ps -f name=nginx -q) | grep IPAddress` instead.

5. Prepare Symfony app
1. Retrieve DB&Redis IP

Expand All @@ -38,27 +49,32 @@
$ docker inspect --format '{{ .NetworkSettings.IPAddress }}' $(docker ps -f name=redis -q)
```

2. Update app/paraeters.yml (adapt hosts according to previous results)
**Note:** If it's empty, run `docker inspect $(docker ps -f name=db -q) | grep IPAddress` instead.

2. Update app/config/parameters.yml

```yml
# path/to/sfApp/app/config/parameters.yml
parameters:
database_host: 172.17.0.4
database_port: null
database_name: symfony
database_user: root
database_password: root
redis_host: 172.17.0.3
redis_host: redis
database_host: mysqldb
```

3. Composer install
3. Composer install & create database

```yml
$ docker exec -ti $(docker ps -f name=php -q) sh -c "cd /var/www/symfony/ && composer install"
```bash
$ docker-compose exec php bash
$ composer install
$ sf doctrine:database:create
$ sf doctrine:schema:update --force
$ sf doctrine:fixtures:load --no-interaction
```

6. Enjoy :-)

## Using
## Usage

Just run `docker-compose -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)
Expand All @@ -69,7 +85,6 @@

Have a look at the `docker-compose.yml` file, here are the `docker-compose` built images:

* `application`: This is the Symfony application code container,
* `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,
Expand All @@ -82,7 +97,6 @@ This results in the following running containers:
$ docker-compose ps
Name Command State Ports
--------------------------------------------------------------------------------------------------
dockersymfony_application_1 /bin/bash Up
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
Expand All @@ -93,29 +107,32 @@ dockersymfony_redis_1 /entrypoint.sh redis-server Up 0.0.0.0:6
## Useful commands

```bash
# Composer (e.g. composer update)
$ docker exec -ti $(docker ps -f name=php -q) sh -c "cd /var/www/symfony/ && composer update"
# bash commands
$ docker-compose exec php bash

# SF commands
$ docker exec -ti $(docker ps -f name=php -q) php /var/www/symfony/app/console cache:clear
# Composer (e.g. composer update)
$ docker-compose exec php composer update

# bash commands
$ docker exec -ti $(docker ps -f name=php -q) /bin/bash
# SF commands (Tips: there is an alias inside php container)
$ docker-compose exec php php /var/www/symfony/app/console cache:clear
# Same command by using alias
$ docker-compose exec php bash
$ sf cache:clear

# MySQL commands
$ docker exec -ti $(docker ps -f name=db -q) mysql -uroot -p"root"
$ docker-compose exec db mysql -uroot -p"root"

# Redis commands
$ docker exec -ti $(docker ps -f name=redis -q) sh -c 'exec redis-cli'
$ docker-compose exec redis redis-cli

# F***ing cache/logs folder
$ sudo chmod -R 777 symfony/app/cache symfony/app/logs
$ sudo chmod -R 777 app/cache app/logs

# Check CPU consumption
$ docker stats $(docker inspect -f "{{ .Name }}" $(docker ps -q))

# Delete all containers
$ docker rm $(docker ps -a -q)
$ docker rm $(docker ps -aq)

# Delete all images
$ docker rmi $(docker images -q)
Expand All @@ -129,9 +146,29 @@ 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 I can add PHPMyAdmin?
Simply add this: (then go to [symfony.dev:8080](http://symfony.dev:8080))

```
phpmyadmin:
image: corbinu/docker-phpmyadmin
ports :
- "8080:80"
environment:
- MYSQL_USERNAME=root
- MYSQL_PASSWORD=root
links:
- db:mysql
```


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


## TODO

- [ ] Upgrade ELK stack. Install [Timelion](https://github.com/elastic/timelion) <3
- [ ] MySQL -> PostgreSQL
- [ ] Move SF app folder?
- [ ] use php7-fpm/php.ini
- [ ] Upgrade ELK stack + install [Timelion](https://github.com/elastic/timelion) plugin <3
5 changes: 0 additions & 5 deletions code/Dockerfile

This file was deleted.

94 changes: 45 additions & 49 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,49 +1,45 @@
application:
build: code
volumes:
- ./symfony:/var/www/symfony
- ./logs/symfony:/var/www/symfony/app/logs
tty: true
db:
image: mysql
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: symfony
MYSQL_USER: user
MYSQL_PASSWORD: root
redis:
image: redis:alpine
ports:
- 6379:6379
php:
build: php7-fpm
ports:
- 9000:9000
volumes_from:
- application
links:
- db
- redis
nginx:
build: nginx
ports:
- 80:80
links:
- php
volumes_from:
- application
volumes:
- ./logs/nginx/:/var/log/nginx
elk:
image: willdurand/elk
ports:
- 81:80
volumes:
- ./elk/logstash:/etc/logstash
- ./elk/logstash/patterns:/opt/logstash/patterns
volumes_from:
- application
- php
- nginx
version: '2'

services:
db:
image: mysql
ports:
- 3306:3306
volumes:
- "./.data/db:/var/lib/mysql"
environment:
MYSQL_ROOT_PASSWORD: root
redis:
image: redis:alpine
ports:
- 6379:6379
php:
build: php7-fpm
ports:
- 9000:9000
links:
- db:mysqldb
- redis
volumes:
- ../../sites/lab/symfony-rest-beer-edition:/var/www/symfony
- ./logs/symfony:/var/www/symfony/app/logs
nginx:
build: nginx
ports:
- 80:80
links:
- php
volumes_from:
- php
volumes:
- ./logs/nginx/:/var/log/nginx
elk:
image: willdurand/elk
ports:
- 81:80
volumes:
- ./elk/logstash:/etc/logstash
- ./elk/logstash/patterns:/opt/logstash/patterns
volumes_from:
- php
- nginx
2 changes: 1 addition & 1 deletion nginx/nginx.conf
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ http {
gzip on;
gzip_disable "msie6";
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
include /etc/nginx/sites-available/*;
open_file_cache max=100;
}

Expand Down
8 changes: 5 additions & 3 deletions php7-fpm/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,7 @@ FROM php:7.0-fpm

MAINTAINER Maxence POUTORD <maxence.poutord@gmail.com>


RUN \
apt-get update && apt-get install -y \
RUN apt-get update && apt-get install -y \
git \
unzip

Expand All @@ -20,3 +18,7 @@ RUN "date"

# Type docker-php-ext-install to see available extensions
RUN docker-php-ext-install pdo pdo_mysql

RUN echo 'alias sf="php app/console"' >> ~/.bashrc

WORKDIR /var/www/symfony