README.md 4.32 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
32
33
34
35
36
37
```

### Mise à jour des bibliothèques PHP

```bash
docker run --rm -v $PWD:/app -w /app unicaen-dev-php${PHP_VERSION}-apache composer update
```

Bertrand Gauthier's avatar
Bertrand Gauthier committed
38
39
40
41
### 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
42
43

```bash
Bertrand Gauthier's avatar
Bertrand Gauthier committed
44
45
46
47
48
49
sudo chown -R ${USER} .
```

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

```bash
Bertrand Gauthier's avatar
Doc    
Bertrand Gauthier committed
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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
```
65
66


Bertrand Gauthier's avatar
Bertrand Gauthier committed
67
## Module Demo
68

69
70
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
71

72
73
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
74
75
76
["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
77
78
79
80
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
81
  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
82
83
84
- 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/`. 
85

Bertrand Gauthier's avatar
Doc    
Bertrand Gauthier committed
86

Bertrand Gauthier's avatar
Bertrand Gauthier committed
87
88
## Configuration du projet

Bertrand Gauthier's avatar
Bertrand Gauthier committed
89
90
- 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` :
91
```bash
Bertrand Gauthier's avatar
Bertrand Gauthier committed
92
cp -r config/autoload/local.php.dist config/autoload/local.php
93
```
94

Bertrand Gauthier's avatar
Bertrand Gauthier committed
95
96
97
- 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
98
```bash
Bertrand Gauthier's avatar
Bertrand Gauthier committed
99
100
101
102
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
103
104
```

105
106
- Le cas échéant, reportez-vous aux docs des modules concernés pour adapter ces fichiers de configuration 
à vos besoins :
107
108
109
  - [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
110

111
112
## Test de l'application 

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