Skip to content

Commit 0621081

Browse files
authored
Merge pull request maxpou#3 from maxpou/dev
2 parents 0aca73d + 5f1ffe1 commit 0621081

File tree

7 files changed

+134
-93
lines changed

7 files changed

+134
-93
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
/logs
2-
/symfony
2+
/.data

.travis.yml

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,30 @@
11
sudo: required
22

33
env:
4-
DOCKER_COMPOSE_VERSION: 1.4.2
4+
DOCKER_COMPOSE_VERSION: 1.7.1
55

66
services:
77
- docker
88

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

1628
script:
1729
- docker-compose up -d
1830
- docker-compose ps
19-

README.md

Lines changed: 68 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,27 @@
22

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

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

7-
![](http://www.maxpou.fr/images/articles/symfony-docker/schema.png)
7+
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/).
88

99
## Installation
1010

1111
1. Retrieve git project
1212

1313
```bash
14-
$ git clone git@github.com:maxpou/docker-symfony.git
14+
$ git clone https://github.com/maxpou/docker-symfony
15+
```
16+
17+
2. In the docker-compose file, indicate where's your Symfony project
18+
19+
```yml
20+
services:
21+
php:
22+
volumes:
23+
- path/to/your/symfony-project:/var/www/symfony
1524
```
1625
17-
2. Move your Symfony project into symfony folder
1826
3. Build containers with (with and without detached mode)
1927
2028
```bash
@@ -27,9 +35,12 @@
2735
```bash
2836
# get containers IP address and update host (replace IP according to your configuration)
2937
$ docker inspect --format '{{ .NetworkSettings.IPAddress }}' $(docker ps -f name=nginx -q)
38+
# unix only (on Windows, edit C:\Windows\System32\drivers\etc\hosts)
3039
$ sudo echo "171.17.0.1 symfony.dev" >> /etc/hosts
3140
```
3241
42+
**Note:** If it's empty, run `docker inspect $(docker ps -f name=nginx -q) | grep IPAddress` instead.
43+
3344
5. Prepare Symfony app
3445
1. Retrieve DB&Redis IP
3546

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

41-
2. Update app/paraeters.yml (adapt hosts according to previous results)
52+
**Note:** If it's empty, run `docker inspect $(docker ps -f name=db -q) | grep IPAddress` instead.
53+
54+
2. Update app/config/parameters.yml
4255
4356
```yml
57+
# path/to/sfApp/app/config/parameters.yml
4458
parameters:
45-
database_host: 172.17.0.4
46-
database_port: null
47-
database_name: symfony
48-
database_user: root
49-
database_password: root
50-
redis_host: 172.17.0.3
59+
redis_host: redis
60+
database_host: mysqldb
5161
```
5262
53-
3. Composer install
63+
3. Composer install & create database
5464
55-
```yml
56-
$ docker exec -ti $(docker ps -f name=php -q) sh -c "cd /var/www/symfony/ && composer install"
65+
```bash
66+
$ docker-compose exec php bash
67+
$ composer install
68+
$ sf doctrine:database:create
69+
$ sf doctrine:schema:update --force
70+
$ sf doctrine:fixtures:load --no-interaction
5771
```
5872
5973
6. Enjoy :-)
6074
61-
## Using
75+
## Usage
76+
77+
Just run `docker-compose -d`, then:
6278
6379
* Symfony app: visit [symfony.dev](http://symfony.dev)
6480
* Symfony dev mode: visit [symfony.dev/app_dev.php](http://symfony.dev/app_dev.php)
@@ -69,7 +85,6 @@
6985
7086
Have a look at the `docker-compose.yml` file, here are the `docker-compose` built images:
7187
72-
* `application`: This is the Symfony application code container,
7388
* `db`: This is the MySQL database container,
7489
* `php`: This is the PHP-FPM container in which the application volume is mounted,
7590
* `nginx`: This is the Nginx webserver container in which application volume is mounted too,
@@ -82,7 +97,6 @@ This results in the following running containers:
8297
$ docker-compose ps
8398
Name Command State Ports
8499
--------------------------------------------------------------------------------------------------
85-
dockersymfony_application_1 /bin/bash Up
86100
dockersymfony_db_1 /entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp
87101
dockersymfony_elk_1 /usr/bin/supervisord -n -c ... Up 0.0.0.0:81->80/tcp
88102
dockersymfony_nginx_1 nginx Up 443/tcp, 0.0.0.0:80->80/tcp
@@ -93,29 +107,32 @@ dockersymfony_redis_1 /entrypoint.sh redis-server Up 0.0.0.0:6
93107
## Useful commands
94108
95109
```bash
96-
# Composer (e.g. composer update)
97-
$ docker exec -ti $(docker ps -f name=php -q) sh -c "cd /var/www/symfony/ && composer update"
110+
# bash commands
111+
$ docker-compose exec php bash
98112
99-
# SF commands
100-
$ docker exec -ti $(docker ps -f name=php -q) php /var/www/symfony/app/console cache:clear
113+
# Composer (e.g. composer update)
114+
$ docker-compose exec php composer update
101115
102-
# bash commands
103-
$ docker exec -ti $(docker ps -f name=php -q) /bin/bash
116+
# SF commands (Tips: there is an alias inside php container)
117+
$ docker-compose exec php php /var/www/symfony/app/console cache:clear
118+
# Same command by using alias
119+
$ docker-compose exec php bash
120+
$ sf cache:clear
104121
105122
# MySQL commands
106-
$ docker exec -ti $(docker ps -f name=db -q) mysql -uroot -p"root"
123+
$ docker-compose exec db mysql -uroot -p"root"
107124
108125
# Redis commands
109-
$ docker exec -ti $(docker ps -f name=redis -q) sh -c 'exec redis-cli'
126+
$ docker-compose exec redis redis-cli
110127
111128
# F***ing cache/logs folder
112-
$ sudo chmod -R 777 symfony/app/cache symfony/app/logs
129+
$ sudo chmod -R 777 app/cache app/logs
113130
114131
# Check CPU consumption
115132
$ docker stats $(docker inspect -f "{{ .Name }}" $(docker ps -q))
116133
117134
# Delete all containers
118-
$ docker rm $(docker ps -a -q)
135+
$ docker rm $(docker ps -aq)
119136
120137
# Delete all images
121138
$ docker rmi $(docker images -q)
@@ -129,9 +146,29 @@ Run `docker-compose up -d` instead.
129146
130147
* Permission problem? See [this doc (Setting up Permission)](http://symfony.com/doc/current/book/installation.html#checking-symfony-application-configuration-and-setup)
131148
149+
* How I can add PHPMyAdmin?
150+
Simply add this: (then go to [symfony.dev:8080](http://symfony.dev:8080))
151+
152+
```
153+
phpmyadmin:
154+
image: corbinu/docker-phpmyadmin
155+
ports :
156+
- "8080:80"
157+
environment:
158+
- MYSQL_USERNAME=root
159+
- MYSQL_PASSWORD=root
160+
links:
161+
- db:mysql
162+
```
163+
164+
165+
## Contributing
166+
167+
First of all, **thank you** for contributing ♥
168+
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).
169+
Also, while creating your Pull Request on GitHub, please write a description which gives the context and/or explains why you are creating it.
170+
171+
132172
## TODO
133173
134-
- [ ] Upgrade ELK stack. Install [Timelion](https://github.com/elastic/timelion) <3
135-
- [ ] MySQL -> PostgreSQL
136-
- [ ] Move SF app folder?
137-
- [ ] use php7-fpm/php.ini
174+
- [ ] Upgrade ELK stack + install [Timelion](https://github.com/elastic/timelion) plugin <3

code/Dockerfile

Lines changed: 0 additions & 5 deletions
This file was deleted.

docker-compose.yml

Lines changed: 45 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,45 @@
1-
application:
2-
build: code
3-
volumes:
4-
- ./symfony:/var/www/symfony
5-
- ./logs/symfony:/var/www/symfony/app/logs
6-
tty: true
7-
db:
8-
image: mysql
9-
ports:
10-
- 3306:3306
11-
environment:
12-
MYSQL_ROOT_PASSWORD: root
13-
MYSQL_DATABASE: symfony
14-
MYSQL_USER: user
15-
MYSQL_PASSWORD: root
16-
redis:
17-
image: redis:alpine
18-
ports:
19-
- 6379:6379
20-
php:
21-
build: php7-fpm
22-
ports:
23-
- 9000:9000
24-
volumes_from:
25-
- application
26-
links:
27-
- db
28-
- redis
29-
nginx:
30-
build: nginx
31-
ports:
32-
- 80:80
33-
links:
34-
- php
35-
volumes_from:
36-
- application
37-
volumes:
38-
- ./logs/nginx/:/var/log/nginx
39-
elk:
40-
image: willdurand/elk
41-
ports:
42-
- 81:80
43-
volumes:
44-
- ./elk/logstash:/etc/logstash
45-
- ./elk/logstash/patterns:/opt/logstash/patterns
46-
volumes_from:
47-
- application
48-
- php
49-
- nginx
1+
version: '2'
2+
3+
services:
4+
db:
5+
image: mysql
6+
ports:
7+
- 3306:3306
8+
volumes:
9+
- "./.data/db:/var/lib/mysql"
10+
environment:
11+
MYSQL_ROOT_PASSWORD: root
12+
redis:
13+
image: redis:alpine
14+
ports:
15+
- 6379:6379
16+
php:
17+
build: php7-fpm
18+
ports:
19+
- 9000:9000
20+
links:
21+
- db:mysqldb
22+
- redis
23+
volumes:
24+
- ../../sites/lab/symfony-rest-beer-edition:/var/www/symfony
25+
- ./logs/symfony:/var/www/symfony/app/logs
26+
nginx:
27+
build: nginx
28+
ports:
29+
- 80:80
30+
links:
31+
- php
32+
volumes_from:
33+
- php
34+
volumes:
35+
- ./logs/nginx/:/var/log/nginx
36+
elk:
37+
image: willdurand/elk
38+
ports:
39+
- 81:80
40+
volumes:
41+
- ./elk/logstash:/etc/logstash
42+
- ./elk/logstash/patterns:/opt/logstash/patterns
43+
volumes_from:
44+
- php
45+
- nginx

nginx/nginx.conf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ http {
2222
gzip on;
2323
gzip_disable "msie6";
2424
include /etc/nginx/conf.d/*.conf;
25-
include /etc/nginx/sites-enabled/*;
25+
include /etc/nginx/sites-available/*;
2626
open_file_cache max=100;
2727
}
2828

php7-fpm/Dockerfile

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@ FROM php:7.0-fpm
33

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

6-
7-
RUN \
8-
apt-get update && apt-get install -y \
6+
RUN apt-get update && apt-get install -y \
97
git \
108
unzip
119

@@ -20,3 +18,7 @@ RUN "date"
2018

2119
# Type docker-php-ext-install to see available extensions
2220
RUN docker-php-ext-install pdo pdo_mysql
21+
22+
RUN echo 'alias sf="php app/console"' >> ~/.bashrc
23+
24+
WORKDIR /var/www/symfony

0 commit comments

Comments
 (0)