Maison > Opération et maintenance > Docker > Solution technique : Pipeline intègre les conteneurs Docker

Solution technique : Pipeline intègre les conteneurs Docker

WBOY
Libérer: 2022-02-09 18:16:53
avant
2749 Les gens l'ont consulté

Cet article vous apporte des connaissances pertinentes sur l'utilisation de Docker d'héritage de pipeline, principalement des problèmes liés à l'intégration de conteneurs Docker dans Pipeline. J'espère qu'il sera utile à tout le monde.

Solution technique : Pipeline intègre les conteneurs Docker

Cet article décrit principalement l'utilisation de Docker d'intégration de pipeline.

1. Description du contexte

L'architecture des microservices est la sélection technologique dominante actuelle Lorsque l'entreprise est mise en œuvre, il y aura de nombreux services métier, que ce soit dans n'importe quel nœud pendant le développement, les tests ou en ligne s'il est basé. sur Le coût d'exploitation des services d'emballage via la compilation manuelle est non seulement extrêmement élevé, mais également sujet aux erreurs.

Grâce à l'approche Pipeline, la construction de l'image de service est orchestrée en une exécution de déclencheur en un clic pour réaliser des processus de gestion automatisés, qui est un module fonctionnel nécessaire dans l'architecture des microservices.

2. Conception de processus

Les nœuds de processus dans cet article sont principalement destinés au package d'application Jar. Le flux de traitement dans le module docker est principalement la gestion de la construction d'images et le fonctionnement des conteneurs : Jar包,在docker模块中的处理流程,主要是镜像构建管理与容器运行:

  • 构建docker文件目录与内容;
  • 拷贝Jar包,创建Dockerfile脚本文件;
  • 执行docker镜像构建,推送云仓库;
  • 拉取镜像文件并运行docker容器;

整个流程的都放在Pipeline流水线中,衔接在本地Jar包生成之后。

三、实现过程

1、插件安装

首先安装流程中Docker集成的相关插件:Docker PipelineDocker pluginCloudBees Docker Hub/Registry Notification

在之前的流水线篇幅中,已经通过流水线完成Gitee仓库代码pull和本地打包,下面开始处理docker环节。

2、镜像构建脚本

关于Dockerfile的脚本语法也可以参考之前docker篇幅,下面看流水线中的用法:

    environment {
        docker_directory = 'docker-app'
        docker_repository = '仓库URL'
    }
    
        stage('Dockerfile') {
            steps {
                sh '''
                rm -rf ${docker_directory}
                mkdir -p ${docker_directory}
                cp auto-client/target/auto-client-1.0-SNAPSHOT.jar ${docker_directory}/auto-client.jar
                cd ${docker_directory}
cat>Dockerfile<<EOF
FROM java:8
MAINTAINER cicadasmile
VOLUME /data/docker/logs
ADD auto-client.jar application.jar
ENTRYPOINT ["java","-Dspring.profiles.active=dev","-Djava.security.egd=file:/dev/./urandom","-jar","/application.jar"]
EOF
                cat Dockerfile
                '''
                echo "create Dockerfile success"
            }
        }
Copier après la connexion

脚本说明:

  • 在流水线的工作空间创建目录docker-app
  • 每次执行都清空一次docker目录,再把Jar包和Docker脚本放进去;
  • cat-EOF-EOF:即创建Dockerfile文件,并把中间的内容写入;
  • 脚本中的内容必须在文件中顶行写入;

3、打包推送

这里即进入docker目录,执行镜像打包的操作,并把镜像推送到云端仓库,很多仓库都是私有的,需要身份验证,通过配置凭据去访问:

stage('DockerImage'){
    steps {
        script {
            dir("${docker_directory}") {
                sh 'ls'
                docker.withRegistry("${docker_directory}", '访问凭据') {
                   docker.build("doc-line-app:latest").push()
                }
            }
            echo "build DockerImage success"
        }
    }
}
Copier après la connexion

4、凭据配置

打开Manage Jenkins界面,Manage Credentials

  • Créer le répertoire et le contenu du fichier Docker ;
  • Copiez le package Jar et créez un fichier de script Dockerfile
  • Exécutez la construction de l'image Docker et transférez-la vers l'entrepôt cloud ; >
  • Extractez le fichier image et exécutez le conteneur Docker ;
L'ensemble du processus est placé dans le Pipeline, connecté après la génération du package Jar local.

3. Processus de mise en œuvre

1. Installation du plug-in

Installez d'abord les plug-ins pertinents intégrés par Docker dans le processus : Docker Pipeline, Plugin Docker. , CloudBees Docker Hub/Notification de registre.

Dans la section précédente sur le pipeline, l'extraction du code de l'entrepôt Gitee et l'empaquetage local ont été effectués via le pipeline. Ensuite, nous commencerons à traiter le lien Docker.

2. Script de construction d'image

Pour la syntaxe du script de Dockerfile, vous pouvez également vous référer à l'article précédent de Docker. Regardons l'utilisation dans le pipeline :

GitEE·地址
https://gitee.com/cicadasmile/butte-auto-parent
Wiki·地址
https://gitee.com/cicadasmile/butte-java-note
Copier après la connexion
Description du script :
    .
  • Travailler dans le répertoire de création d'espace du pipeline docker-app ;
  • Vider le répertoire docker à chaque exécution, puis y placer le package Jar et le script Docker ;
  • cat-EOF -EOF : Créez un fichier Docker et écrivez le contenu du milieu
  • Le contenu du script doit être écrit dans la ligne supérieure du fichier ;
  • /ul>

    3. Packaging Push


    Ici, vous entrez dans le répertoire Docker, effectuez l'opération d'empaquetage de l'image et envoyez l'image vers l'entrepôt cloud. De nombreux entrepôts sont privés et nécessitent un accès en configurant des informations d'identification : rrreee

    4. Configuration des identifiants

    🎜Ouvrez l'interface Gérer Jenkins, option Gérer les identifiants 🎜🎜🎜🎜🎜Suivez le processus de configuration suivant : 🎜 🎜🎜🎜🎜 4. Adresse du code source🎜rrreee🎜Apprentissage recommandé : "🎜Tutoriel vidéo Docker🎜"🎜🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:csdn.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal