136 lines
3.8 KiB
Markdown
136 lines
3.8 KiB
Markdown
# Deploiement Docker — SIRH
|
|
|
|
## Pre-requis
|
|
|
|
Installer Docker et Docker Compose sur la machine :
|
|
|
|
```bash
|
|
# Ubuntu
|
|
sudo apt update
|
|
sudo apt install -y ca-certificates curl gnupg
|
|
sudo install -m 0755 -d /etc/apt/keyrings
|
|
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
|
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
|
sudo apt update
|
|
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
|
|
sudo usermod -aG docker $USER
|
|
```
|
|
|
|
Se deconnecter/reconnecter pour que le groupe `docker` prenne effet.
|
|
|
|
## Premier deploiement
|
|
|
|
### 1. Creer le dossier de deploiement
|
|
|
|
```bash
|
|
sudo mkdir -p /var/www/sirh
|
|
sudo chown -R $(whoami):$(whoami) /var/www/sirh
|
|
```
|
|
|
|
### 2. Copier les fichiers depuis le repo
|
|
|
|
```bash
|
|
cp deploy/docker/docker-compose.prod.yml /var/www/sirh/docker-compose.yml
|
|
cp deploy/docker/deploy.sh /var/www/sirh/deploy.sh
|
|
cp deploy/docker/.env.example /var/www/sirh/.env
|
|
chmod +x /var/www/sirh/deploy.sh
|
|
```
|
|
|
|
### 3. Configurer l'environnement
|
|
|
|
Editer `/var/www/sirh/.env` avec les vraies valeurs :
|
|
- `APP_SECRET` : generer avec `openssl rand -hex 32`
|
|
- `DATABASE_URL` : `postgresql://user:pass@host.docker.internal:5432/sirh?serverVersion=16&charset=utf8`
|
|
- `JWT_PASSPHRASE` : generer avec `openssl rand -hex 32`
|
|
|
|
### 4. Generer les cles JWT
|
|
|
|
```bash
|
|
cd /var/www/sirh
|
|
mkdir -p config/jwt
|
|
docker run --rm -v $(pwd)/config/jwt:/jwt php:8.4-cli bash -c \
|
|
"apt-get update -qq && apt-get install -y -qq openssl > /dev/null && \
|
|
openssl genpkey -algorithm RSA -out /jwt/private.pem -pkeyopt rsa_keygen_bits:4096 && \
|
|
openssl rsa -pubout -in /jwt/private.pem -out /jwt/public.pem"
|
|
```
|
|
|
|
### 5. Creer le dossier uploads
|
|
|
|
```bash
|
|
mkdir -p /var/www/sirh/uploads
|
|
```
|
|
|
|
### 6. Configurer le login au registry Gitea
|
|
|
|
```bash
|
|
docker login gitea.malio.fr
|
|
# Username: ton user Gitea
|
|
# Password: ton token Gitea
|
|
```
|
|
|
|
### 7. Configurer Nginx systeme
|
|
|
|
```bash
|
|
sudo cp deploy/nginx/sirh-docker.conf /etc/nginx/sites-available/sirh.conf
|
|
sudo ln -sf /etc/nginx/sites-available/sirh.conf /etc/nginx/sites-enabled/sirh.conf
|
|
sudo nginx -t && sudo systemctl reload nginx
|
|
```
|
|
|
|
### 8. Deployer
|
|
|
|
```bash
|
|
cd /var/www/sirh
|
|
./deploy.sh
|
|
```
|
|
|
|
## Deployer une release
|
|
|
|
```bash
|
|
cd /var/www/sirh
|
|
./deploy.sh # deploie la derniere version (latest)
|
|
./deploy.sh v0.1.61 # deploie une version specifique
|
|
```
|
|
|
|
## Rollback
|
|
|
|
### Image seule (pas de changement de schema BDD)
|
|
|
|
```bash
|
|
./deploy.sh v0.1.60
|
|
```
|
|
|
|
### Avec rollback de migration
|
|
|
|
```bash
|
|
# 1. Rollback schema (pendant que la version actuelle tourne encore)
|
|
docker compose exec -T app php bin/console doctrine:migrations:migrate prev --no-interaction
|
|
# 2. Deployer l'ancienne version
|
|
./deploy.sh v0.1.60
|
|
```
|
|
|
|
## Voir les logs
|
|
|
|
```bash
|
|
cd /var/www/sirh
|
|
docker compose logs -f # tous les logs
|
|
docker compose logs -f --tail=100 # 100 dernieres lignes
|
|
```
|
|
|
|
## Migration depuis l'ancien deploiement (tar.gz)
|
|
|
|
Si l'application tourne deja en bare metal :
|
|
|
|
1. Installer Docker (voir pre-requis)
|
|
2. Creer le dossier `/var/www/sirh-docker/` (ne pas ecraser l'ancien)
|
|
3. Copier les fichiers :
|
|
```bash
|
|
cp /var/www/sirh/.env /var/www/sirh-docker/.env
|
|
cp -a /var/www/sirh/config/jwt /var/www/sirh-docker/config/jwt
|
|
cp -a /var/www/sirh/var/uploads /var/www/sirh-docker/uploads
|
|
```
|
|
4. Editer `/var/www/sirh-docker/.env` : changer `DATABASE_URL` pour utiliser `host.docker.internal` au lieu de `127.0.0.1`
|
|
5. Mettre a jour Nginx systeme : remplacer la conf par `deploy/nginx/sirh-docker.conf`
|
|
6. Arreter l'ancien PHP-FPM : `sudo systemctl stop php8.4-fpm`
|
|
7. Deployer : `cd /var/www/sirh-docker && ./deploy.sh`
|
|
8. Verifier que tout marche, puis supprimer l'ancien dossier
|