doc-locale/fr-fr/install/docker/installation.md
{{< details >}}
{{< /details >}}
Pour installer GitLab dans un conteneur Docker, utilisez Docker Compose, Docker Engine ou le mode Docker Swarm.
Prérequis :
localhost.Par défaut, GitLab utilise le port 22 pour interagir avec Git via SSH. Pour utiliser le port 22, ignorez cette section.
Pour utiliser un port différent, vous pouvez soit :
Modifier le port SSH du serveur maintenant (recommandé). Les URL de clonage SSH n'auront alors pas besoin du nouveau numéro de port :
ssh://[email protected]/user/project.git
Modifier le port SSH de GitLab Shell après l'installation. Les URL de clonage SSH incluront alors le numéro de port configuré :
ssh://[email protected]:<portNumber>/user/project.git
Pour modifier le port SSH du serveur :
Ouvrez /etc/ssh/sshd_config avec votre éditeur et modifiez le port SSH :
Port = 2424
Enregistrez le fichier et redémarrez le service SSH :
sudo systemctl restart ssh
Vérifiez que vous pouvez vous connecter via SSH. Ouvrez une nouvelle session de terminal et connectez-vous au serveur via SSH en utilisant le nouveau port.
[!warning] Des recommandations spécifiques existent pour les volumes hébergeant les données Gitaly. Les systèmes de fichiers basés sur NFS peuvent entraîner des problèmes de performances, c'est pourquoi EFS n'est pas recommandé.
Créez un répertoire pour les fichiers de configuration, les journaux et les fichiers de données. Le répertoire peut se trouver dans le répertoire personnel de votre utilisateur (par exemple ~/gitlab-docker), ou dans un répertoire tel que /srv/gitlab.
Créez le répertoire :
sudo mkdir -p /srv/gitlab
Si vous exécutez Docker avec un utilisateur autre que root, accordez les permissions appropriées à l'utilisateur pour le nouveau répertoire.
Configurez une nouvelle variable d'environnement $GITLAB_HOME qui définit le chemin d'accès au répertoire que vous avez créé :
export GITLAB_HOME=/srv/gitlab
Vous pouvez également ajouter la variable d'environnement GITLAB_HOME au profil de votre shell afin qu'elle soit appliquée à toutes les futures sessions de terminal :
~/.bash_profile~/.zshrcLe conteneur GitLab utilise des volumes montés sur l'hôte pour stocker les données persistantes :
| Emplacement local | Emplacement dans le conteneur | Utilisation |
|---|---|---|
$GITLAB_HOME/data | /var/opt/gitlab | Stocke les données de l'application. |
$GITLAB_HOME/logs | /var/log/gitlab | Stocke les journaux. |
$GITLAB_HOME/config | /etc/gitlab | Stocke les fichiers de configuration GitLab. |
Dans un environnement de production, vous devez épingler votre déploiement à une version spécifique de GitLab. Consultez les versions disponibles et choisissez la version que vous souhaitez utiliser sur la page des tags Docker :
Le nom du tag se compose des éléments suivants :
gitlab/gitlab-ee:<version>-ee.0
Où <version> est la version de GitLab, par exemple 16.5.3. La version inclut toujours <major>.<minor>.<patch> dans son nom.
À des fins de test, vous pouvez utiliser le tag latest, tel que gitlab/gitlab-ee:latest, qui pointe vers la dernière release stable.
Les exemples suivants utilisent une version stable de l'Enterprise Edition. Si vous souhaitez utiliser l'image Release Candidate (RC) ou nightly, utilisez plutôt gitlab/gitlab-ee:rc ou gitlab/gitlab-ee:nightly.
Pour installer la Community Edition, remplacez ee par ce.
Vous pouvez exécuter les images Docker GitLab en utilisant :
Avec Docker Compose, vous pouvez configurer, installer et mettre à niveau votre installation GitLab basée sur Docker :
Créez un fichier docker-compose.yml. Par exemple :
services:
gitlab:
image: gitlab/gitlab-ee:<version>-ee.0
container_name: gitlab
restart: always
hostname: 'gitlab.example.com'
environment:
GITLAB_OMNIBUS_CONFIG: |
# Add any other gitlab.rb configuration here, each on its own line
external_url 'https://gitlab.example.com'
ports:
- '80:80'
- '443:443'
- '22:22'
volumes:
- '$GITLAB_HOME/config:/etc/gitlab'
- '$GITLAB_HOME/logs:/var/log/gitlab'
- '$GITLAB_HOME/data:/var/opt/gitlab'
shm_size: '256m'
[!note] Lisez la section Préconfigurer le conteneur Docker pour voir comment fonctionne la variable
GITLAB_OMNIBUS_CONFIG.
Voici un autre exemple de fichier docker-compose.yml avec GitLab s'exécutant sur un port HTTP et SSH personnalisé. Notez que les variables GITLAB_OMNIBUS_CONFIG correspondent à la section ports :
services:
gitlab:
image: gitlab/gitlab-ee:<version>-ee.0
container_name: gitlab
restart: always
hostname: 'gitlab.example.com'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.example.com:8929'
gitlab_rails['gitlab_shell_ssh_port'] = 2424
ports:
- '8929:8929'
- '443:443'
- '2424:22'
volumes:
- '$GITLAB_HOME/config:/etc/gitlab'
- '$GITLAB_HOME/logs:/var/log/gitlab'
- '$GITLAB_HOME/data:/var/opt/gitlab'
shm_size: '256m'
Cette configuration est identique à l'utilisation de --publish 8929:8929 --publish 2424:22.
Dans le même répertoire que docker-compose.yml, démarrez GitLab :
docker compose up -d
Vous pouvez également installer GitLab en utilisant Docker Engine.
Si vous avez configuré la variable GITLAB_HOME, ajustez les répertoires selon vos besoins et exécutez l'image :
Si vous n'utilisez pas SELinux, exécutez cette commande :
sudo docker run --detach \
--hostname gitlab.example.com \
--env GITLAB_OMNIBUS_CONFIG="external_url 'http://gitlab.example.com'" \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume $GITLAB_HOME/config:/etc/gitlab \
--volume $GITLAB_HOME/logs:/var/log/gitlab \
--volume $GITLAB_HOME/data:/var/opt/gitlab \
--shm-size 256m \
gitlab/gitlab-ee:<version>-ee.0
Cette commande télécharge et démarre un conteneur GitLab, et publie les ports nécessaires pour accéder à SSH, HTTP et HTTPS. Toutes les données GitLab sont stockées en tant que sous-répertoires de $GITLAB_HOME. Le conteneur redémarre automatiquement après un redémarrage du système.
Si vous utilisez SELinux, exécutez plutôt cette commande :
sudo docker run --detach \
--hostname gitlab.example.com \
--env GITLAB_OMNIBUS_CONFIG="external_url 'http://gitlab.example.com'" \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume $GITLAB_HOME/config:/etc/gitlab:Z \
--volume $GITLAB_HOME/logs:/var/log/gitlab:Z \
--volume $GITLAB_HOME/data:/var/opt/gitlab:Z \
--shm-size 256m \
gitlab/gitlab-ee:<version>-ee.0
Cette commande garantit que le processus Docker dispose de suffisamment de permissions pour créer les fichiers de configuration dans les volumes montés.
Si vous utilisez l'intégration Kerberos, vous devez également publier votre port Kerberos (par exemple, --publish 8443:8443). Ne pas le faire empêche les opérations Git avec Kerberos. Le processus d'initialisation peut prendre un certain temps. Vous pouvez suivre ce processus avec :
sudo docker logs -f gitlab
Après le démarrage du conteneur, vous pouvez visiter gitlab.example.com. Le conteneur Docker peut mettre un certain temps avant de commencer à répondre aux requêtes.
Visitez l'URL GitLab et connectez-vous avec le nom d'utilisateur root et le mot de passe issu de la commande suivante :
sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
[!note] Le fichier de mot de passe est automatiquement supprimé lors du premier redémarrage du conteneur après 24 heures.
Avec le mode Docker Swarm, vous pouvez configurer et déployer votre installation GitLab avec Docker dans un cluster swarm.
En mode swarm, vous pouvez utiliser les secrets Docker et les configurations Docker pour déployer votre instance GitLab de manière efficace et sécurisée. Les secrets peuvent être utilisés pour transmettre en toute sécurité votre mot de passe root initial sans l'exposer en tant que variable d'environnement. Les configurations peuvent vous aider à maintenir votre image GitLab aussi générique que possible.
Voici un exemple qui déploie GitLab avec quatre runners en tant que stack, en utilisant des secrets et des configurations :
Créez un fichier docker-compose.yml :
services:
gitlab:
image: gitlab/gitlab-ee:<version>-ee.0
container_name: gitlab
restart: always
hostname: 'gitlab.example.com'
ports:
- "22:22"
- "80:80"
- "443:443"
volumes:
- $GITLAB_HOME/data:/var/opt/gitlab
- $GITLAB_HOME/logs:/var/log/gitlab
- $GITLAB_HOME/config:/etc/gitlab
shm_size: '256m'
environment:
GITLAB_OMNIBUS_CONFIG: "from_file('/omnibus_config.rb')"
configs:
- source: gitlab
target: /omnibus_config.rb
secrets:
- gitlab_root_password
gitlab-runner:
image: gitlab/gitlab-runner:alpine
deploy:
mode: replicated
replicas: 4
configs:
gitlab:
file: ./gitlab.rb
secrets:
gitlab_root_password:
file: ./root_password.txt
Pour réduire la complexité, l'exemple précédent exclut la configuration network. Vous pouvez trouver plus d'informations dans la référence officielle du fichier Compose.
Créez un fichier gitlab.rb :
external_url 'https://my.domain.com/'
gitlab_rails['initial_root_password'] = File.read('/run/secrets/gitlab_root_password').gsub("\n", "")
Créez un fichier appelé root_password.txt contenant le mot de passe :
MySuperSecretAndSecurePassw0rd!
Assurez-vous d'être dans le même répertoire que docker-compose.yml et exécutez :
docker stack deploy --compose-file docker-compose.yml mystack
Après avoir installé Docker, vous devez configurer votre instance GitLab.