|
|
# GitLab Container Registry
|
|
|
|
|
|
Il est possible d'utiliser GitLab comme docker registry (docker Hub like).
|
|
|
Cela vous permet de conserver et de disposé de differentes versions des images docker de votre projet (par exemple une image par experience reproductible ou pour roolback une version).
|
|
|
|
|
|
Pour activer le registry il faut aller dans le setting general du projet.
|
|
|
Pour utiliser ce service par la suite il faut posséder un compte local GitLab, si ce n'est pas le cas, il suffit d'aller dans votre setting et de modifier votre mot de passe. Cela aura pour effet d'activer l'authentification via GitLab.
|
|
|
|
|
|
## Utilisation
|
|
|
|
|
|
Premièrement il faut se connecter au registry:
|
|
|
```
|
|
|
docker login gitlab.paca.inra.fr:4567
|
|
|
```
|
|
|
|
|
|
Par la suite vous pouvez creer votre image (utilisation du Dockerfile a la racine de projet):
|
|
|
```
|
|
|
docker build -t gitlab.paca.inra.fr:4567/<namespace>/<projet> -f Dockerfile .
|
|
|
```
|
|
|
|
|
|
Une fois l'image créer il suffit de l'envoyer dans le registry:
|
|
|
```
|
|
|
docker push gitlab.paca.inra.fr:4567/<namespace>/<projet>:latest
|
|
|
```
|
|
|
|
|
|
Pour récupérer ou utiliser l'image par la suite:
|
|
|
> si le projet est publique l'authentification n'est pas necessaire.
|
|
|
|
|
|
```
|
|
|
docker login gitlab.paca.inra.fr:4567
|
|
|
# on le recupere
|
|
|
docker pull gitlab.paca.inra.fr:4567/<namespace>/<projet>:latest
|
|
|
# on le lance directement
|
|
|
docker run [options] gitlab.paca.inra.fr:4567/<namespace>/<projet>:latest [arguments]
|
|
|
```
|
|
|
|
|
|
## Automatisation
|
|
|
|
|
|
Il est possible d'intégrer cette dernière partie dans l'intégration continue.
|
|
|
Pour ce faire, on utilise une image de docker dind (docker in docker) qui va nous permettre de générer notre image et la pull.
|
|
|
|
|
|
Exemple d'un fichier .gitlab-ci.yml (il suffit de changer <mon\_Dockerfile>) :
|
|
|
```
|
|
|
image: docker:stable
|
|
|
|
|
|
buildDocker:
|
|
|
variables:
|
|
|
DOCKER_TLS_CERTDIR: ""
|
|
|
DOCKER_HOST: tcp://docker:2375/
|
|
|
DOCKER_DRIVER: overlay2
|
|
|
services:
|
|
|
- docker:19.03.0-dind
|
|
|
before_script:
|
|
|
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
|
|
|
script:
|
|
|
- docker pull $CI_REGISTRY_IMAGE:latest || true
|
|
|
- docker build --cache-from $CI_REGISTRY_IMAGE:latest --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA --tag $CI_REGISTRY_IMAGE:latest -f <mon_Dockerfile> .
|
|
|
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
|
|
|
- docker push $CI_REGISTRY_IMAGE:latest
|
|
|
after_script:
|
|
|
- docker logout $CI_REGISTRY
|
|
|
```
|
|
|
|
|
|
### Note
|
|
|
|
|
|
Si vous utilisez le serveur [Shiny](https://shiny.biosp.inra.fr) de l'unité BioSP, il est possible d'automatiser le deploiement de l'image de l'application shiny. Comme cela à chaque mise à jour du dépôt le serveur shiny peut être mis à jour avec la dernière version de l'application.
|
|
|
Voici un [exemple](https://gitlab.paca.inra.fr/snippets/3) du fichier .gitlab-ci.yml .
|
|
|
|
|
|
|