README.md 4.58 KB
Newer Older
Bertrand Gauthier's avatar
Bertrand Gauthier committed
1
2
# Squelette d'application Unicaen

Bertrand Gauthier's avatar
Doc    
Bertrand Gauthier committed
3
4
Ce squelette d'application constitue un socle minimal pour entamer rapidement le développement d'une nouvelle 
application à la mode "Unicaen".
5
6


Bertrand Gauthier's avatar
Doc    
Bertrand Gauthier committed
7
## Création d'une nouvelle appli à partir du squelette
8

Bertrand Gauthier's avatar
Bertrand Gauthier committed
9
Imaginons que nous voulons créer une nouvelle appli PHP 7.3 dans le répertoire `./newapp`.
Bertrand Gauthier's avatar
Doc    
Bertrand Gauthier committed
10

Bertrand Gauthier's avatar
Bertrand Gauthier committed
11
12
13
14
15
### Préalable

Nous aurons besoin de l'image Docker `unicaen-dev-php${PHP_VERSION}-apache` pour être dans un
environnement PHP dont on maîtrise la version. Pour obtenir puis construire cette image, reportez-vous au dépôt 
[unicaen-image](https://git.unicaen.fr/open-source/docker/unicaen-image).
Bertrand Gauthier's avatar
Doc    
Bertrand Gauthier committed
16

Bertrand Gauthier's avatar
Bertrand Gauthier committed
17
### Création des sources de l'application
Bertrand Gauthier's avatar
Bertrand Gauthier committed
18

Bertrand Gauthier's avatar
Doc    
Bertrand Gauthier committed
19
20
21
```bash
APP_DIR=newapp
PHP_VERSION=7.3
Bertrand Gauthier's avatar
Bertrand Gauthier committed
22

Bertrand Gauthier's avatar
Doc    
Bertrand Gauthier committed
23
24
25
26
27
docker run \
--rm \
-v $PWD:/app \
-w /app unicaen-dev-php${PHP_VERSION}-apache \
composer create-project --repository https://gest.unicaen.fr/packagist unicaen/skeleton-application ${APP_DIR}
Bertrand Gauthier's avatar
Bertrand Gauthier committed
28
29

cd ${APP_DIR}
Bertrand Gauthier's avatar
Doc    
Bertrand Gauthier committed
30
31
```

Bertrand Gauthier's avatar
Bertrand Gauthier committed
32
33
34
Cette commande `composer create-project` fait un `git clone` pour obtenir le dernier tag des sources du squelette 
d'application, puis un `composer install` pour installer les dépendances PHP.

Bertrand Gauthier's avatar
Doc    
Bertrand Gauthier committed
35
36
### Mise à jour des bibliothèques PHP

Bertrand Gauthier's avatar
Bertrand Gauthier committed
37
38
Mieux vaut se tenir à la page et mettre à jour les dépendances PHP :

Bertrand Gauthier's avatar
Doc    
Bertrand Gauthier committed
39
40
41
42
```bash
docker run --rm -v $PWD:/app -w /app unicaen-dev-php${PHP_VERSION}-apache composer update
```

Bertrand Gauthier's avatar
Bertrand Gauthier committed
43
44
45
46
### Droits d'écriture

Comme les commandes lancées via Docker (comme ici, `composer`) sont exécutées en `root`, il faut reprendre la main 
sur les fichiers créés.
Bertrand Gauthier's avatar
Doc    
Bertrand Gauthier committed
47
48

```bash
Bertrand Gauthier's avatar
Bertrand Gauthier committed
49
50
51
52
53
54
sudo chown -R ${USER} .
```

### Création du dépôt git

```bash
Bertrand Gauthier's avatar
Doc    
Bertrand Gauthier committed
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
git init
git add .
git commit -m "Squelette de l'application"
git push --set-upstream git@git.unicaen.fr:dsi/${APP_DIR}.git master
```

*NB : la création du dépôt git de cette façon n'est possible que si vous disposez des droits suffisants dans le 
namespace gitlab spécifié.*


## Construction et lancement du container Docker

```bash
docker-compose up --build
```
70
71


Bertrand Gauthier's avatar
Bertrand Gauthier committed
72
## Module Demo
73

74
75
Le squelette d'application possède un module "démo" qui utilise une base de données PostgreSQL de démonstration 
permettant d'avoir une authentification locale qui fonctionne. 
Bertrand Gauthier's avatar
Bertrand Gauthier committed
76

77
78
Cette base de données est fournie par le service `db` (fichier de config `docker-compose.yml`).
Il y a également un service `adminer` fournissant de quoi explorer la base de données avec l'outil 
Bertrand Gauthier's avatar
Bertrand Gauthier committed
79
80
81
["Adminer"](https://www.adminer.org) en vous rendant à l'adresse `http://localhost:9080` (sélectionner "PostgeSQL"
et utiliser les informations de connexion à la bdd présentes dans le `docker-compose.yml`).
Pour explorer/administrer la base de données *de l'extérieur du container* (avec PHPStorm par exemple), 
Bertrand Gauthier's avatar
Bertrand Gauthier committed
82
83
84
85
l'adresse de la base est cette fois `localhost:8432`.

NB :
- Grâce au montage `./data/db:/var/lib/postgresql/data` spécifié dans `docker-compose.yml`, la base de données est 
Bertrand Gauthier's avatar
Bertrand Gauthier committed
86
  persistée dans le répertoire `data/db` de l'appli (d'ailleurs, ne pas oublier de faire un `sudo chmod -R 777 data/db`).
Bertrand Gauthier's avatar
Bertrand Gauthier committed
87
88
89
- Les scripts de création de la base de données exécutés au lancement du container (si la base n'existe pas déjà)
  se trouvent dans le répertoire `./docker/db` de l'appli et sont fournis au container grâce au montage 
  `./docker/db/:/docker-entrypoint-initdb.d/`. 
90

Bertrand Gauthier's avatar
Doc    
Bertrand Gauthier committed
91

Bertrand Gauthier's avatar
Bertrand Gauthier committed
92
93
## Configuration du projet

Bertrand Gauthier's avatar
Bertrand Gauthier committed
94
95
- Si cela n'a pas déjà été fait par une des `post-create-project-cmd` du `composer.json`, 
créez le fichier de config `config/autoload/local.php` à partir du `.dist` :
96
```bash
Bertrand Gauthier's avatar
Bertrand Gauthier committed
97
cp -r config/autoload/local.php.dist config/autoload/local.php
98
```
99

Bertrand Gauthier's avatar
Bertrand Gauthier committed
100
101
102
- Si cela n'a pas déjà été fait par une des `post-create-project-cmd` du `composer.json`, 
créez dans `config/autoload` les fichiers de configuration locaux et globaux des bibliothèques utilisées 
à partir des `.dist` :
Bertrand Gauthier's avatar
Bertrand Gauthier committed
103
```bash
Bertrand Gauthier's avatar
Bertrand Gauthier committed
104
105
106
107
cp -r vendor/unicaen/app/config/unicaen-app.global.php.dist   config/autoload/unicaen-app.global.php
cp -r vendor/unicaen/app/config/unicaen-app.local.php.dist    config/autoload/unicaen-app.local.php
cp -r vendor/unicaen/auth/config/unicaen-auth.global.php.dist config/autoload/unicaen-auth.global.php
cp -r vendor/unicaen/auth/config/unicaen-auth.local.php.dist  config/autoload/unicaen-auth.local.php
Bertrand Gauthier's avatar
Bertrand Gauthier committed
108
109
```

110
111
- Le cas échéant, reportez-vous aux docs des modules concernés pour adapter ces fichiers de configuration 
à vos besoins :
112
113
114
  - [unicaen/app](https://git.unicaen.fr/lib/unicaen/app)
  - [unicaen/auth](https://git.unicaen.fr/lib/unicaen/auth)

Bertrand Gauthier's avatar
Doc    
Bertrand Gauthier committed
115

116
117
## Test de l'application 

Bertrand Gauthier's avatar
Bertrand Gauthier committed
118
Théoriquement, l'application devrait être accessible à l'adresse [https://localhost:8443](https://localhost:8443).
119
Le port utilisé dépend des redirections configurées dans le fichier [docker-compose.yml](docker-compose.yml).