Cette configuration fonctionne pour moi :
- créer un sous-domaine à partir de Plesk (ex. gitlab.mydomain.com)
- sélectionnez votre certificat Let's Encrypt dans "Paramètres d'hébergement" et assurez-vous de définir une redirection 301 permanente sur HTTPS (cochez simplement la case).
- lors du démarrage de votre conteneur Docker, exposez le port 80 (ex. 80:10080)
-
dans "Apache & nginx Settings" ajouter ce qui suit :
location / {
proxy_pass http://localhost:10080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
Cela servira votre sous-domaine par le biais de HTTPS et de votre certificat Let's Encrypt, tout en envoyant les demandes au port 80 de votre conteneur afin que vous n'ayez pas à vous soucier de transmettre le certificat à GitLab depuis l'extérieur du conteneur.
D'après ce que j'ai compris, cette solution est sûre, car le trafic non crypté est confiné dans le serveur (si votre démon Docker se trouve sur le même serveur que Plesk) et inaccessible de l'extérieur.
--
Pour votre dernier point
être capable d'exécuter des tâches de construction dans le conteneur GitLab (npm scripts etc.) et enfin déplacer des fichiers de sortie spécifiques vers des répertoires de sous-domaines gérés par Plesk (en dehors du conteneur)
c'est une question à part entière.
Pour exécuter les constructions, vous devez installer GitLab Runner. La documentation de GitLab suggère de l'installer sur un hôte différent, mais vous pouvez essayer d'utiliser le logiciel Image Docker sur le même hôte.
Pour construire et déployer vos applications, voir GitLab Runner. docs . Vous devrez configurer des "pipelines" pour ce que l'on appelle le "déploiement continu".
Pour créer un sous-domaine pour chaque application, vous pouvez soit.. :
- créer les sous-domaines manuellement à partir de Plesk et déployer les fichiers à l'aide de scripts comme étape finale de votre "pipeline".
- utiliser quelques scripts et les API de Plesk pour créer automatiquement des sous-domaines
- ignorez Plesk et optez pour un système Docker complet ; utilisez un proxy inverse qui gérera tous vos sous-domaines et vos certificats Let's Encrypt, par exemple Traefik
Il ne s'agit que d'indications, je vous suggère de faire des recherches et de lire davantage sur le sujet du CI/CD.