_index.md 2.68 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
---
title: Installation d'un service
---

Lorsqu'une application est ajoutée, on vérifie d'abord qu'elle n'est pas déjà configurée (par exemple, une application
DNS dispose déjà d'une configuration qu'il suffit d'activer).

# Configurer une application existante

On ajoute l'application à la liste du checkout et mettre à jour :

```
cd /srv
echo app >> .git/info/sparse-checkout
git pull origin master
```

On configure les éléments nécessaires à l'application, sans éditer le `docker-compose.yml` ou les autres fichiers génériques du dépôt.

# Ajouter une nouvelle application

## Structure

On choisit le nom de l'application pour ne pas coïncider avec celui d'une application existante. On créer le dossier de l'application dans `/srv` : 

```
cd /srv/app
```

Enfin, on crée le fichier `docker-compose.yml`, les éventuels dossiers de données et de configuration associés :

```
mkdir /srv/app/conf
mkdir /srv/app/data
vim /srv/app/docker-compose.yml
```

Au besoin, on ajoute des répertoires de données par service, ou pour plusieurs types de données, en employant des noms significatifs, par exemple : `uploads`, `attachments`, `db`, etc.

En fin de configuration, ces fichiers sont commités sur le dépôt Git :

```
cd /srv
echo app >> .git/info/sparse-checkout
git add app/docker-compose.yml
git commit
git push origin master
```

## Configuration Compose

Dans le fichier `docker-compose`, on choisit des noms de service Docker Compose significatifs, tels que `db`, `web`, `backend`, etc. On n'inclut que des données génériques dans le `docker-compose.yml`, voué à être publié.

Toutes les données non génériques seront importées depuis un fichier `.env`, soit par passage explicite de variable :

```
ports:
  $ipv4:25:25
  $ipv6:25:25
```

Soit par passage implicite directement dans l'environnement du conteneur :

```
environment:
  - DATABASE_USER
  - DATABASE_PASSWORD
```

Le fichier `.env` contient alors :

```
ipv4=1.2.3.4
ipv6=2101:f8c2:4401::1
DATABASE_USER=myuser
DATABASE_PASSWORD=mypassword
```

## Exposition de services

Pour exposer un service directement via UDP ou TCP, on choisit une des paires d'adresses publiques de la machine, et on configure dans le `docker-compose.yml` les ports exposés, en utilisant des variables pour la généricité.

Pour exposer un service Web, on configure les labels `traefik`, comme suit :

```
    labels:
      - traefik.enable=true
      - traefik.frontend.rule=Host:domain.tedomum.net
      - traefik.frontend.contentSecurityPolicy=default-src 'self'; style-src 'self' 'unsafe-inline'
      - traefik.port=8081
```

La configuration CSP est optionnelle mais conseillée ; le contenu du header doit être adapté à l'application.