Skip to content
Snippets Groups Projects
Verified Commit 10e0a0b1 authored by Quentin Duchemin's avatar Quentin Duchemin
Browse files

[GraphBot] Initialize directory with Compose and credentials injection

parent ad06def0
No related branches found
No related tags found
1 merge request!50Remove CI
FROM chosto/graphbot:v1.4
CMD [ "/inject_env.sh" ]
## GraphBot
### Introduction
Ce dossier contient les fichiers nécessaires pour lancer [Docker Graph Bot](https://gitlab.utc.fr/picasoft/projets/graph-bot) sur l'infrastructure de Picasoft. Voir le projet pour la documentation de référence.
Le Dockerfile se base sur l'image officielle et rajoute un entrypoint permettant d'injecter les identifiants du serveur FTP au moment du lancement du conteneur, à partir de l'environnement. Sans cela, les identifiants seraient dans le fichier de configuration, ce qui empêche de le versionner.
### Configuration
La configuration se fait :
* Dans le [docker-compose.yml](./docker-compose.yml) pour les variables d'environnement (niveau de log, dossier de configuration...)
* Dans [config.json](./config/config.json) pour le comportement de DGB
Pour le premier lancement, dans la mesure où DGB interroge plusieurs machines virtuelles, dont certaines à distance, il est nécessaire de créer un dossier `./config/auth` contenant les clés privées et certificats pour communiquer avec les socket Docker distants.
Voir :
* [La nomenclature des fichiers](https://gitlab.utc.fr/picasoft/projets/graph-bot#hosts)
* [Le renouvellement des certificats pour se connecter à distance au socket Docker](https://wiki.picasoft.net/doku.php?id=technique:adminsys:docker:docker-socket-certs) si les certificats sont expirés ou qu'ils n'existent pas sur la machine de lancement.
La configuration actuelle prévoit que DGB soit lancé sur la machine `monitoring`.
### Secrets
Au premier lancement, copier `./secrets/sftp.secrets.example` dans `./secrets/sftp.secrets` et remplacer par les valeurs de production.
### Mise à jour
Il suffit de changer le tag dans le [Dockerfile](./Dockerfile), de construire l'image, la pousser sur le registre de Picasoft et mettre à jour le Docker Compose.
Vérifier le cas échéant les changements de configuration dans les [releases](https://gitlab.utc.fr/picasoft/projets/graph-bot/-/releases).
{
"organization": "Picasoft",
"merge": false,
"hosts": [
{
"name": "pica01",
"url": "pica01.picasoft.net",
"port": 2376,
"exclude": [],
"tls_config":
{
"ca_cert": "auth/pica01/ca.pem",
"cert": "auth/pica01/cert.pem",
"key": "auth/pica01/key.pem"
}
},
{
"name": "pica02",
"url": "pica02.picasoft.net",
"port": 2376,
"exclude": [],
"tls_config":
{
"ca_cert": "auth/pica02/ca.pem",
"cert": "auth/pica02/cert.pem",
"key": "auth/pica02/key.pem"
}
},
{
"name": "pica01-test",
"url": "pica01-test.picasoft.net",
"port": 2376,
"exclude": [],
"tls_config":
{
"ca_cert": "auth/pica01-test/ca.pem",
"cert": "auth/pica01-test/cert.pem",
"key": "auth/pica01-test/key.pem"
}
},
{
"name": "monitoring",
"url": "localhost"
}
],
"color_scheme": {
"traefik": "#edb591",
"port": "#86c49b",
"link": "#75e9cd",
"image": "#e1efe6",
"container": "#ffffff",
"network": "#ffffff",
"volume": "#819cd9",
"bind_mount": "#b19cd9",
"host": "#c7ceea",
"dark_text": "#32384f",
"bright_text": "#ffffff"
},
"hide": ["binds"],
"actions": [
{
"type": "sftp",
"hostname": "uploads.picasoft.net",
"port": 2222,
"login": "pica",
"password": "SFTP_USER",
"remote_path": "SFTP_PASSWORD"
}
]
}
version: "3.7"
networks:
graphbot:
volumes:
output:
name: graphbot
services:
app:
image: registry.picasoft.net/graph-bot:v1.4
container_name: graph-bot
init: true
networks:
- graphbot
volumes:
- ./config:/config
- /var/run/docker.sock:/var/run/docker.sock
- output:/output
environment:
CONFIG_PATH: '/config'
OUTPUT_PATH: '/output'
CRON_CONFIG: '0 0 * * *'
env_file:
- ./secrets/sftp.secrets
restart: unless-stopped
#!/bin/sh
if [ -z "${SFTP_USER}" ]; then
echo "SFTP_USER not set, exiting!"
exit 1
else
if [ -z "${SFTP_PASSWORD}" ]; then
echo "SFTP_PASSWORD not set, exiting!"
exit 1
else
echo "Inject SFTP credentials..."
sed -i "s/SFTP_USER/$SFTP_USER/g" /entrypoint.sh
sed -i "s/SFTP_PASSWORD/$SFTP_PASSWORD/g" /entrypoint.sh
echo "Launching original entrypoint..."
/entrypoint.sh
SFTP_USER=user
SFTP_PASSWORD=password
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment