# Déploiement de Geocontrib avec Docker

## Installation

### Manuelle

Cloner le dépôt.

Créer une fichier .env en se basant sur le env.sample et corriger le contenu.

### Avancée

#### Cloner un dépot de configuration geocontrib

Depuis un autre dépot, par exemple:

 * https://git.neogeo.fr/batigere/docker-configuration
 * https://git.neogeo.fr/mrn-mission-des-risques-naturels/docker-configuration
 * https://git.neogeo.fr/datasud/dockers/docker-configuration

#### Installer gitlab runner

Sur le serveur de destination:

##### Installer gitlab runner 

```shell
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash sudo apt-get -y install gitlab-runner
```

##### Configurer le runner
Dans le repo créé : Settings > CI/CD > Runners > Project runners > New project runner
-> suivre les indications
Bien expliciter le tag du runner par exemple "deploy-geocontrib-nomduclient-recette"

Éditer le fichier .gitlab-ci.yml pour renseigner le tag

Si besoin surcharger le fichier recette.docker-compose.override.yml et le recette.env

Sur le serveur de destination, cloner https://git.neogeo.fr/geocontrib/geocontrib-docker dans /opt/geocontrib/geocontrib-docker en étant l'utilisateur gitlab-runner.

```shell
sudo -u gitlab-runner mkdir -p /opt/geocontrib/geocontrib-docker
sudo -u gitlab-runner mkdir -p /opt/geocontrib/geocontrib-config

sudo -u gitlab-runner git clone git@git.neogeo.fr:geocontrib/geocontrib-docker.git /opt/geocontrib/geocontrib-docker
sudo -u gitlab-runner git clone [dépot créé au début] /opt/geocontrib/geocontrib-config
```

Dans le dossier geocontrib-docker, création de deux liens symboliques pour pointer vers geocontrib-config

```shell
sudo -u gitlab-runner ln -s /opt/geocontrib/geocontrib-config/recette.env /opt/geocontrib/geocontrib-docker/.env
sudo -u gitlab-runner ln -s /opt/geocontrib/geocontrib-config/recette.docker-compose.override.yml /opt/geocontrib/geocontrib-docker/docker-compose.override.yml
```

##### Donner accès depuis internet en fonction de l'environnement

Exemple de configuration nginx : 

```nginx
server {
    error_log /var/log/nginx/ega-preprod.mrn.asso.fr_error.log warn;
    access_log /var/log/nginx/ega-preprod.mrn.asso.fr_access.log combined;

    listen 80;

    server_name recette.fr;

    location / {
        proxy_pass http://127.0.0.1:8085$request_uri;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        client_max_body_size 0;

        # Websocket
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
    }
}
```

## Configuration

Variables Docker : https://git.neogeo.fr/geocontrib/geocontrib-django/-/tree/develop/docs/documentation_technique/Docker.md