Les constructions en plusieurs étapes dans Alibaba Cloud Container Registry (ACR) produisent des images d'applications Java sécurisées et compactes, tout en réduisant les temps de construction.
Prérequis
Alibaba Cloud Container Registry est activé.
Docker doit être installé. Pour plus d'informations, consultez Installer et utiliser Docker et Docker Compose.
-
Un dépôt de code source Java est hébergé sur GitHub, GitLab ou Bitbucket.
RemarqueVous pouvez copier et héberger un simple projet Java Maven depuis GitHub pour tester le processus.
Informations générales
Problèmes courants lors de la construction d'images
La construction d'une image à partir d'un Dockerfile peut présenter plusieurs difficultés :
-
Complexité de rédaction des Dockerfiles
Les développeurs ne sont pas toujours familiers avec l'écriture de Dockerfiles pour construire des images d'applications.
-
Images volumineuses
L'inclusion des phases de compilation, de test et d'empaquetage dans un seul Dockerfile ajoute des couches d'image inutiles, ce qui entraîne une hiérarchie complexe et un fichier image de grande taille.
-
Risque de fuite du code source
Le code source peut être inclus par inadvertance dans l'image finale, créant ainsi un risque de sécurité.
Avantages des constructions en plusieurs étapes
Pour les langages compilés tels que Java, l'utilisation d'une construction en plusieurs étapes dans votre Dockerfile offre les avantages suivants :
-
Sécurité améliorée de l'image
La première étape utilise une image de base de compilation pour télécharger les dépendances, compiler, tester et empaqueter l'application. La seconde étape utilise une image de base d'exécution légère et copie uniquement les artefacts compilés issus de la première étape. L'image finale ne contient aucun code source.
-
Optimisation des couches et de la taille de l'image
L'image finale ne contient que l'image de base et les artefacts compilés. Cela se traduit par moins de couches d'image et une taille de fichier réduite.
-
Vitesses de construction accrues
Les outils de construction tels que Docker et BuildKit peuvent exécuter plusieurs étapes de construction en parallèle pour réduire le temps global de construction.
Étape 1 : Lier un dépôt de code source
Dans la console Alibaba Cloud Container Registry, liez votre dépôt de code hébergé. Cet exemple utilise un dépôt GitHub.
Connectez-vous à la console Container Registry.
Dans la barre de navigation supérieure, sélectionnez une région.
Sur la page Instances, cliquez sur l'instance Personal Edition que vous souhaitez gérer.
Dans le volet de navigation de gauche, choisissez .
Dans la ligne correspondant à GitHub, cliquez sur Bind Account dans la colonne Actions. Dans la boîte de dialogue qui s'affiche, cliquez sur Go to the source code repository to bind account pour ouvrir GitHub.
Sur la page d'autorisation, cliquez sur Authorize AliyunDeveloper. Après votre retour sur la page Code Source, le statut de GitHub s'affiche comme Bound, indiquant que la liaison a réussi.
Étape 2 : Créer un dépôt
Connectez-vous à la console Container Registry.
Dans la barre de navigation supérieure, sélectionnez une région.
Sur la page Instances, cliquez sur l'instance Personal Edition que vous souhaitez gérer.
Dans le volet de navigation de gauche, choisissez puis cliquez sur Create Repository.
-
Configurez les informations du dépôt.
Paramètre
Description
Exemple
Region
La région où se trouve le dépôt.
China (Hangzhou)
Namespace
Le namespace du dépôt.
test23432
Repository Name
Saisissez un nom pour le dépôt.
test
Repository Type
Le type de dépôt peut être Public ou Private. Vous devez être connecté pour pousser des images, quel que soit le type de dépôt. Pour protéger vos données, utilisez un dépôt privé.
-
Public : Toute personne peut extraire des images sans authentification.
-
Private : L'authentification est requise pour extraire des images.
Private
Summary
Une brève description.
-
Description
Une description détaillée. Le format Markdown est pris en charge.
Utilisez le Dockerfile créé et le service de construction d'images ACR pour construire, empaqueter et exécuter l'image.
-
-
Cliquez sur Next et définissez la source du code.
Paramètre
Description
Code Source
Définissez Code Source sur GitHub et sélectionnez le dépôt de code source lié.
Build Settings
Pour cet exemple, sélectionnez Automatically Build Images When Code Changes et Build with Servers Deployed Outside Chinese Mainland.
-
Automatically Build Images When Code Changes : Déclenche automatiquement une construction lorsque du code est validé sur une branche.
-
Build with Servers Deployed Outside Chinese Mainland : Exécute la construction dans un centre de données situé hors de Chine continentale et pousse l'image résultante vers la région spécifiée.
-
Build Without Cache : Force le re-téléchargement de l'image de dépendance de base pour chaque construction, ce qui peut augmenter le temps de construction.
-
-
Cliquez sur Create Repository.
Une fois le dépôt créé, la page des détails du dépôt affiche ses informations de base.
Dans le volet de navigation de gauche, cliquez sur l'icône
située à gauche du nom du dépôt. Sur la page Repositories, vous pouvez voir votre nouveau dépôt. Un Status indiqué comme Normal signifie que le dépôt a été créé avec succès.
Étape 3 : Effectuer une build
Dans le volet de navigation de gauche, choisissez . Cliquez sur le nom de votre repository ou cliquez sur Manage dans la colonne Actions du repository.
Dans le volet de navigation de gauche, cliquez sur Build. Dans la section Build Rules, cliquez sur Add Build Rule.
-
Configurez la règle de build.
Paramètre
Description
Exemple
Type
L'événement qui déclenche la règle de build lorsque le code est poussé vers le repository. Les valeurs valides sont Branch et Tag.
Branch
Branch/Tag
La branche de code à partir de laquelle effectuer la build.
master
Build Context Directory
Le répertoire où se trouve le Dockerfile. Il s'agit d'un chemin relatif par rapport à la racine de la branche de code. Dans ce tutoriel, le chemin complet est /Dockerfile, saisissez donc / ici.
/
Dockerfile Filename
Le nom du Dockerfile. La valeur par défaut est Dockerfile. Par exemple, si le chemin complet est /Dockerfile, saisissez Dockerfile.
Dockerfile
Image Version
Le tag pour la version de l'image.
V1.0.0
Cliquez sur OK pour revenir à la page Build.
-
Dans la section Build Rules, recherchez la règle que vous avez créée et cliquez sur Build dans la colonne Actions correspondante.
Dans la section Build Log, un statut de build Success indique que la build est terminée.
Vérifier les résultats
Afficher l'image construite
Dans le volet de navigation de gauche, choisissez Repository > Repositories. Cliquez sur le nom de votre repository ou cliquez sur Manage dans la colonne Actions. Dans le volet de navigation de gauche de la page des détails du repository, cliquez sur Image Version pour afficher l'image construite.
Exécuter l'image
À partir du 9 septembre 2024, le format des endpoints de registry pour les nouvelles instances Personal Edition changera. Pour plus d'informations, consultez Notes d'utilisation pour les nouvelles instances Personal Edition. Choisissez une méthode pour pousser et tirer des images en fonction de la version de votre instance.
Nouvelle instance Personal Edition
-
Exécutez la commande suivante dans Docker pour vous connecter à Alibaba Cloud Docker Registry. Dans la commande, remplacez
acr_e2******@test.aliyunid.compar le nom de votre compte Alibaba Cloud,cn-hangzhoupar la région de l'instance etcrpi-xxxxpar l'ID de l'instance. Le mot de passe vous sera demandé. Pour trouver l'ID de l'instance, connectez-vous à la console Alibaba Cloud Container Registry, accédez à votre Personal Edition et recherchez l'Instance ID sur la page Overview sous l'onglet Instance .docker login --username=acr_e2******@test.aliyunid.com crpi-xxxx.cn-hangzhou.personal.cr.aliyuncs.com -
Exécutez la commande suivante pour télécharger l'image.
docker pull crpi-xxxx.cn-hangzhou.personal.cr.aliyuncs.com/test23432/test:V1.0.0 -
Exécutez la commande suivante pour afficher vos images Docker.
docker images -
Exécutez la commande suivante pour lancer l'image.
docker run -ti crpi-xxxx.cn-hangzhou.personal.cr.aliyuncs.com/test23432/test:V1.0.0 Hello World!
Ancienne instance Personal Edition
-
Exécutez la commande suivante dans Docker pour vous connecter à Alibaba Cloud Docker Registry. Dans la commande, remplacez
acr_e2******@test.aliyunid.compar le nom de votre compte Alibaba Cloud etcn-hangzhoupar la région de votre instance. Le mot de passe vous sera demandé.docker login --username=acr_e2******@test.aliyunid.com registry.cn-hangzhou.cr.aliyuncs.com -
Exécutez la commande suivante pour télécharger l'image. Dans la commande, remplacez
cn-hangzhoupar la région de votre instance,test23432par votre namespace ettest:V1.0.0par le nom de votre repository et le tag de l'image.docker pull registry.cn-hangzhou.cr.aliyuncs.com/test23432/test:V1.0.0 -
Exécutez la commande suivante pour afficher vos images Docker.
docker images -
Exécutez la commande suivante pour lancer l'image. Remplacez
cn-hangzhoupar la région de votre instance Personal Edition. Remplaceztest23432par votre namespace réel. Remplaceztest:V1.0.0par le nom de votre repository réel et le tag de l'image.docker run -ti registry.cn-hangzhou.cr.aliyuncs.com/test23432/test:V1.0.0 Hello World!