Quick-start
Démarrer un projet de conteneurisation d'application en utilisant le workflow devops de Bearstech
Sur cette page
Prérequis
- Git
- Docker
- docker-compose compatible avec le format de la version 3
- L’accès à un Gitlab infogéré par Bearstech
Démarrer un projet
Voici l’exemple d’un “Hello World” minimal qui s’intégre dans le workflow devops de Bearstech.
1. Créer le projet dans Gitlab et le récupérer sur sa machine
git clone gitlab@gitlab.bearstech.com:<my-project>.git
2. Rédiger le Dockerfile pour l’image de l’application
En utilisant l’image de base Python fournie par Bearstech, rédiger le Dockerfile de l’application, en spécifiant l’id de l’utilisateur autorisé à exécuter l’application sur l’hôte.
FROM bearstech/python:3.9
RUN mkdir -p /var/www/html && \
echo "<html><h1>Hi!</h1></html>" > /var/www/html/index.html
USER 1001
EXPOSE 8000
CMD ["python", "-m", "http.server", \
"--directory", "/var/www/html", \
"--bind", "0.0.0.0", "8000"]
3. Définir le service dans un docker-compose
Le serveur web contenu dans l’image sera instancié dans un conteneur Docker, il suffit juste d’indiquer l’image à utiliser dans le fichier docker-compose.yml.
---
version: "3"
services:
app:
image: ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA}
labels:
traefik.frontend.rule: Host:${CI_ENVIRONMENT_DOMAIN}
NB: Le workflow utilise un reverse-proxy pour le routage des url et qui nécessite la présence d’un label.
4. Définir la chaîne d’intégration continue
Les étapes qui seront jouées sur le serveur d’intégration de Gitlab sont décrites dans un fichier .gitlab-ci.yml
. Ici, son rôle est de construire l’image, de la stocker dans la registry Gitlab, puis de lancer le déploiement du conteneur en production.
---
stages:
- build
- deploy
build:
stage: build
script:
- docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA -f Dockerfile .
- echo $CI_BUILD_TOKEN | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
deploy:
stage: deploy
environment:
name: staging
url: http://$your_domain
script:
- factory-deploy
NB: la commande
factory-deploy
est intégrée au workflow, son rôle est d’assurer le déploiement des conteneurs de manière automatique ou manuelle.
5. Déclencher la pipeline dans Gitlab
L’envoi des fichiers vers Gitlab permet de déclencher le build et le déploiement automatique de l’application sur le serveur de CI
git add .
git commit -m "initial commit"
git push origin master
Tester l’application en local
1. Définir les variables d’environnement
Pour reproduire le comportement de Gitlab CI en local, initialiser quelques variables dans un fichier .env
CI_REGISTRY_IMAGE=minimal_app
CI_COMMIT_SHA=dev
CI_ENVIRONMENT_DOMAIN=dev.workflow
2. Builder l’image de l’application
Construire l’image de l’application en local (en utlisant les valeurs définies dans le .env) permettra de l’instancier avec docker-compose.
docker build -t minimal_app:dev .
3. Lancer l’application
La commande docker-compose va lancer le conteneur de l’application. Pour y accéder, récupérer l’IP du conteneur et ouvrir l’adresse http://<ip-conteneur>:8000
dans un navigateur.
docker-compose up -d