Suite de notre série sur GitLab avec ce quatrième épisode.
- Part 1 : Git clone
- Part 2 : CI/CD Build
- Part 3 : CI/CD Test coverage
- Part 4 : CI/CD Docker and Registry
- Part 5 : CI/CD Go prod
- Part 6 : Gitlab Runner
Pour la suite de notre déploiement, nous devons créer une image docker et la charger sur le registry de GitLab.
Tout d’abord créez un fichier docker-compose.yml :
touch docker-compose.yml && vi docker-compose.yml
version: "2" services: app: build: context: . dockerfile: Dockerfile image: registry.gitlab.com/nlabbe/gitlab-workshop ports: - 5000:5000
Celle-ci comprend :
- Construction de l’image docker a partir du fichier ./Dockerfile
- Indication du repo d’image gitlab registry.gitlab.com/nlabbe/gitlab-workshop
- Ouverture du ports 5000 sur la machine docker et sur le local
Ensuite il nous faut créer notre image docker dans le fichier Dockerfile :
touch Dockerfile && vi Dockerfile
Rien de très compliqué 😉 :
FROM node:latest RUN mkdir -p /var/www/html WORKDIR /var/www/html COPY . . RUN npm i RUN npm run build RUN npm i serve -g CMD ["serve", "-s", "build"]
Les instructions restent simples :
- Téléchargement de la dernière version de l’image node sur le repo docker
- Création du dossier html dans l’image docker et copie de tout les fichier du projet dans ce dossier
- Lancement de npm install et npm build et installation du module npm serve
- Utilisation de serve pour lancer un serveur HTTP sur le dossier build
Pour finir nous allons rajouter le build de cette image docker au déploiement.
Mais d’abord il nous faut récupérer notre jeton d’accès gitlab a générer dans les setting.
Par exemple eHMnGUKVhikh1uEAjMpr
vi .gitlab-ci.yml
stages: - build - test - docker # ... docker: stage: docker image: docker:latest services: - docker:dind script: - apk add --update py-pip && pip install docker-compose - docker login -u gitlab-ci-token -p "eHMnGUKVhikh1uEAjMpr" "registry.gitlab.com" - docker-compose build - docker push "registry.gitlab.com/nlabbe/gitlab-workshop"
Le nouveau stage comprend :
- Installation d’une image docker avec le service docker:dind
- Installation de module complémentaire pour lancer le build de l’image
- Lancement de docker-compose build pour builder l’image
- Lancement de docker push pour pousser l’image sur le repo GitLab
Enfin commitez le tout :
git add . && git commit -m "docker stage" && git push origin master
Votre pipeline devrait maintenant s’afficher avec un nouveau stage :
et l’image devrait être accessible sur l’onglet Registry.
Bonus
Voici comment installer l’image depuis le repo sur son poste en local :
docker run -p "5000:5000" registry.gitlab.com/nlabbe/gitlab-workshop
Rendez-vous sur votre http://localhost:3000/ pour voir le résultat.
Next episode : go prod !