README.md 4.03 KB
Newer Older
nico's avatar
nico committed
1
# Docker Symfony (PHP7-FPM - NGINX - MariaDB)
ntrugeon's avatar
ntrugeon committed
2

nico's avatar
nico committed
3
Cet environnement correspond à l'environnement de production du serveur lpmiaw.univ-lr.fr à savoir :
nico's avatar
README    
nico committed
4

nico's avatar
nico committed
5
6
    - php 7.2
    - mariadb 10.1
nico's avatar
README    
nico committed
7

ntrugeon's avatar
ntrugeon committed
8
Docker-symfony4 vous donne tout ce que vous avez besoin pour développer des applications sous Symfony 4.
ntrugeon's avatar
ntrugeon committed
9
C'est une architecture complète à utiliser avec docker et [docker-compose (version 1.7 minimum)](https://docs.docker.com/compose/).
ntrugeon's avatar
ntrugeon committed
10

ntrugeon's avatar
ntrugeon committed
11
12
## Prérequis

ntrugeon's avatar
ntrugeon committed
13
1. Avoir [docker](https://docs.docker.com/install/) et [docker-compose](https://docs.docker.com/compose/install/#install-compose)
14
2. Avoir Phpstorm. Votre statut d'étudiant vous donne droit à une licence gratuite de la suite.
ntrugeon's avatar
ntrugeon committed
15

ntrugeon's avatar
ntrugeon committed
16
## Spécificité des machines virtuelles linux
nico's avatar
nico committed
17

ntrugeon's avatar
ntrugeon committed
18
19
1. Vous stockerez vos fichiers dans /media/Qi/$USER
2. Tout ce qui est stocké dans /home/$USER n'est pas conservé d'une session à une autre
nico's avatar
nico committed
20
21
22
3. Il faut refaire certaines manipulations à chaque début de TP :
    - git config...
    - ajout des clés ssh
ntrugeon's avatar
ntrugeon committed
23
    - construction des images docker
nico's avatar
nico committed
24
25
    - ...

ntrugeon's avatar
ntrugeon committed
26
27
28
## Installation

1. Dupliquer le projet :
ntrugeon's avatar
ntrugeon committed
29
    ```bash
nico's avatar
nico committed
30
    git clone https://framagit.org/nicolasunivlr/docker-symfony4.git
nico's avatar
nico committed
31
32
33
34
    # renommer le dossier
    mv docker-symfony4 mon_projet (tp1Symfony pour la première fois)
    # on se place dans la bon dossier
    cd mon_projet
ntrugeon's avatar
ntrugeon committed
35
36
    ```

nico's avatar
nico committed
37
2. (**facultatif** sur votre ordinateur personnel, **obligatoire** sur un poste de l'Université) Modifier le ficher .env pour activer et/ou modifier le proxy
ntrugeon's avatar
ntrugeon committed
38

ntrugeon's avatar
ntrugeon committed
39

ntrugeon's avatar
ntrugeon committed
40
3. Construire et exécuter les conteneurs (Cela peut prendre un peu de temps la première fois)
ntrugeon's avatar
ntrugeon committed
41
42

    ```bash
ntrugeon's avatar
ntrugeon committed
43
44
    $ sudo docker-compose build
    $ sudo docker-compose up -d
ntrugeon's avatar
ntrugeon committed
45
46
    ```

ntrugeon's avatar
ntrugeon committed
47
4. Installer Symfony
nico's avatar
nico committed
48
    1. On installe symfony en version minimale avec Composer. On installe les composants nécessaires à nos applications également avec Composer
ntrugeon's avatar
ntrugeon committed
49
50

        ```bash
ntrugeon's avatar
ntrugeon committed
51
        $ sudo docker-compose exec php bash
nico's avatar
nico committed
52
53
        $ composer create-project symfony/skeleton symfony
        $ cd symfony
ntrugeon's avatar
ntrugeon committed
54
        $ composer require --dev profiler maker
nico's avatar
nico committed
55
        $ composer require annotations twig orm form validator
56
        $ composer require symfony/apache-pack
ntrugeon's avatar
ntrugeon committed
57
        ```
ntrugeon's avatar
ntrugeon committed
58
    
ntrugeon's avatar
ntrugeon committed
59
    2. Ouvrir le dossier symfony du projet dans phpStorm, et créer **symfony/.env.local** en ajoutant la ligne DATABASE_URL comme ceci :
ntrugeon's avatar
ntrugeon committed
60
61
62
63

        ```yml
        DATABASE_URL=mysql://symfony:symfony@db:3306/symfony
        ```
ntrugeon's avatar
ntrugeon committed
64
    3. En profiter pour installer dans Phpstorm les plugins symfony et .env pour profiter pleinement de votre IDE.
ntrugeon's avatar
ntrugeon committed
65

ntrugeon's avatar
ntrugeon committed
66
6. C'est parti :-)
ntrugeon's avatar
ntrugeon committed
67

ntrugeon's avatar
ntrugeon committed
68
## Je commence à travailler sur le projet
ntrugeon's avatar
ntrugeon committed
69

ntrugeon's avatar
ntrugeon committed
70
Vous avez juste à exécuter `sudo docker-compose up -d`, puis:
ntrugeon's avatar
ntrugeon committed
71

ntrugeon's avatar
ntrugeon committed
72
* Application symfony [localhost:8000](http://localhost:8000)
nico's avatar
nico committed
73
* Logs du serveur web : logs/nginx
ntrugeon's avatar
ntrugeon committed
74

ntrugeon's avatar
ntrugeon committed
75
## Je finis de travailler sur le projet
ntrugeon's avatar
ntrugeon committed
76
Vous avez juste à exécuter `sudo docker-compose down`.
ntrugeon's avatar
ntrugeon committed
77

ntrugeon's avatar
ntrugeon committed
78
## Comment cela fonctionne ?
ntrugeon's avatar
ntrugeon committed
79

ntrugeon's avatar
ntrugeon committed
80
Vous pouvez aller regarder le fichier `docker-compose.yml`, avec les images `docker-compose` correspondantes:
ntrugeon's avatar
ntrugeon committed
81

nico's avatar
nico committed
82
* `db`: le container mariadb 10.1,
ntrugeon's avatar
ntrugeon committed
83
* `php`: php-fpm en version 7.2,
nico's avatar
nico committed
84
* `web`: le serveur web nginx,
ntrugeon's avatar
ntrugeon committed
85

ntrugeon's avatar
ntrugeon committed
86
## Commandes utiles
ntrugeon's avatar
ntrugeon committed
87
88
89


```bash
ntrugeon's avatar
ntrugeon committed
90
# On rentre dans un conteneur en bash
ntrugeon's avatar
ntrugeon committed
91
$ sudo docker-compose exec php bash
ntrugeon's avatar
ntrugeon committed
92

ntrugeon's avatar
ntrugeon committed
93
# Mise à jour de Composer
ntrugeon's avatar
ntrugeon committed
94
$ sudo docker-compose exec php composer update
ntrugeon's avatar
ntrugeon committed
95

ntrugeon's avatar
ntrugeon committed
96
# Commandes symfony
ntrugeon's avatar
ntrugeon committed
97
$ sudo docker-compose exec php bash
nico's avatar
nico committed
98
$ cd symfony
ntrugeon's avatar
ntrugeon committed
99
$ sf make:controller
ntrugeon's avatar
ntrugeon committed
100
$ sf make:entity
ntrugeon's avatar
ntrugeon committed
101
...
ntrugeon's avatar
ntrugeon committed
102

nico's avatar
nico committed
103
# Supprimer tous les conteneurs (en cas de gros plantage, à utiliser en dernier recours)
ntrugeon's avatar
ntrugeon committed
104
105
$ docker rm $(docker ps -aq)

nico's avatar
nico committed
106
# Supprimer toutes les images (en cas de gros plantage, à utiliser en dernier recours)
ntrugeon's avatar
ntrugeon committed
107
108
109
110
$ docker rmi $(docker images -q)
```

## FAQ
ntrugeon's avatar
ntrugeon committed
111
112
* Je ne comprends rien, que faire ?
Allez voir votre prof !
ntrugeon's avatar
ntrugeon committed
113

ntrugeon's avatar
ntrugeon committed
114
115
* Xdebug?
Xdebug est déjà configuré
nico's avatar
nico committed
116
117
Il faut ajouter le module Xdebug helper pour Firefox ou pour Chrome
Il faut également configurer Phpstorm en se connectant au port  `9001` avec l'id `PHPSTORM`. Vous pouvez suivre ce [lien](https://blog.eleven-labs.com/fr/debug-run-phpunit-tests-using-docker-remote-interpreters-with-phpstorm/). Le dépôt que vous utilisez est déjà paramétré. Utilisez docker-compose à la place de docker dans le "Remote" de l'interpréteur PHP.