
Traduit pour vous
un article de Julius Minmo sur la configuration du déploiement continu pour votre projet. L'automatisation économise une tonne de temps et d'efforts. L'article sera utile principalement aux programmeurs débutants.
Le déploiement continu est une bonne chose. Une fois que nous avons validé le projet et que tout se passe en mode automatique, le suivi de ce processus est tout simplement fascinant. Dans cet article, je vais montrer comment vous pouvez tout configurer pour un projet domestique.
Nous vous rappelons: pour tous les lecteurs de «Habr» - une remise de 10 000 roubles lors de l'inscription à un cours Skillbox en utilisant le code promo «Habr».
Skillbox recommande: Le cours en ligne Frontend Developer Profession .
Donc, pour commencer, regardons le diagramme qui explique la différence entre la livraison continue et le déploiement continu.

Dans le cas d'un projet domestique, nous choisissons le déploiement continu, car personne sauf vous ne travaille avec lui (le projet) et personne n'en dépend. Eh bien, puisque dans la plupart des cas, vous souhaitez que les modifications soient déployées immédiatement, le choix est évident. Si vous souhaitez ultérieurement modifier le processus, vous pouvez toujours le faire.
Vous apprendrez ce qui suit:
- Comment faire un dockerfile.
- Comment télécharger un projet sur GitHub.
- Comment créer automatiquement une image Docker sur un Docker Hub.
- Comment télécharger et exécuter automatiquement une image depuis Watchtower.
Ce qui est requis:
- Une compréhension de base de ce que sont Docker et Dockerfile.
- Git installé.
- Compte sur <a href='https://hub.docker.com/"> Docker Hub
Serveur (physique ou virtuel) exécutant Docker.
Voici mes
référentiels GitHub et
Docker Hub avec lesquels je travaille.
Pourquoi est-ce que j'utilise Docker?
Il permet d'utiliser le même environnement pour différents processus, ce qui élimine l'apparence des
Heisenbags et le problème "cela ne fonctionne que sur ma machine". Les conteneurs sont isolés, ce qui est bon du point de vue de la cybersécurité. Il y a plus d'avantages, mais, à mon avis, ce sont les deux principaux.
Configurer DockerfileNous avons d'abord besoin d'un Dockerfile pour le projet. Ce fichier est toujours appelé de cette façon et n'a pas d'extension. Il est toujours dans le répertoire principal du projet.
Il commence par l'instruction FROM, qui indique à Docker à partir de quelle image de base nous partons. Vous pouvez faire une analogie avec la peinture. Nous pouvons imaginer cette image comme une toile finie avec un fond peint et l'élément principal manquant de la composition (votre programme).
Ensuite, copiez les fichiers de projet dans le conteneur à l'aide de la commande COPY ...
Il vous permet de récupérer des fichiers de l'emplacement initial à l'emplacement actuel - bien sûr, à l'intérieur du conteneur.
Ensuite, vous devez installer les dépendances, pour cela j'utilise Python PIP. La principale chose à retenir est d'exécuter des commandes dans un conteneur avec RUN.
De python: 3.7
COPIE ..
RUN pip install -r requirements.txtC'est simple, non? Vous pouvez maintenant exécuter le programme dans le conteneur.
CMD ["python", "./my_script.py"]Maintenant que vous avez terminé, vous avez terminé avec le Dockerfile et vous pouvez créer manuellement l'image et le conteneur. Maintenant, sautez juste ce moment.
Créons maintenant un référentiel dans GitHub, mais rappelez-vous que la ligne "Initialiser ce référentiel avec un README" n'a pas besoin d'être touchée.

Copiez maintenant l'URL.

Ouvrez cmd / shell du répertoire racine du projet. Vous devez maintenant initialiser le référentiel, ajouter des fichiers, configurer le mode distant, valider les fichiers et envoyer le projet à GitHub.
git init git add * git remote add origin https://github.com/<user>/<repository>.git git commit -a -m "Make Dockerfile ready for CD" git push -u origin master
Si tout va bien, le référentiel GitHub ressemblera à ceci:

Nous sommes à mi-chemin du succès!
Vous devez maintenant connecter GitHub au Docker Hub. Pour ce faire, accédez aux paramètres de votre compte.

Faites défiler vers le bas et connectez-vous.

Créez maintenant le référentiel dans le Docker Hub.

Nommez votre référentiel et cliquez sur l'icône GitHub ou Bitbucket. Ensuite, nous sélectionnons l'organisation (généralement votre surnom) et le nom du projet. Si vous le souhaitez, les paramètres peuvent être modifiés.

Eh bien, maintenant la dernière étape - ici, nous avons besoin de Watchtower sur la machine cible. Il s'agit d'un programme qui vous permet d'automatiser le processus. Si une mise à jour apparaît, Watchtower supprime le conteneur d'origine et crée un conteneur à partir d'une nouvelle image avec les mêmes paramètres.
La bonne nouvelle est que vous pouvez installer Watchtower avec Docker, pour cela vous devez entrer la commande suivante dans le terminal:
docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock v2tec/watchtower
Et maintenant, nous lançons le conteneur pour notre projet!
docker run -d --name <my-project> <username>/<my-project>
-d permet au programme de fonctionner en arrière-plan, il ne se fermera donc pas si vous fermez le terminal.
Pour conclure, si vous envoyez une validation au référentiel GitHub, le Docker Hub créera automatiquement une image Docker. Ensuite, Watchtower interagira avec lui.
Quant aux tests, vous pouvez utiliser Travis CI. Vous pouvez en savoir
plus ici , mais l'essentiel est que vous ajoutez un autre fichier à votre référentiel qui contient des instructions pour un serveur externe pour effectuer des tests unitaires ou toute autre instruction.
Skillbox recommande: