Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Technische Lösung: Pipeline integriert Docker-Container

Technische Lösung: Pipeline integriert Docker-Container

WBOY
WBOYnach vorne
2022-02-09 18:16:532629Durchsuche

Dieser Artikel vermittelt Ihnen relevantes Wissen über die Verwendung von Pipeline-Vererbungs-Docker, hauptsächlich im Zusammenhang mit der Pipeline-Integration von Docker-Containern. Ich hoffe, dass er für alle hilfreich ist.

Technische Lösung: Pipeline integriert Docker-Container

Dieser Artikel beschreibt hauptsächlich die Verwendung der Pipeline-Integration Docker.

1. Hintergrundbeschreibung

Microservice-Architektur ist die aktuelle Mainstream-Technologieauswahl. Wenn das Unternehmen implementiert ist, gibt es viele Geschäftsdienste, sei es in einem beliebigen Knoten während der Entwicklung, beim Testen oder online Der Betriebsaufwand für Verpackungsdienstleistungen durch manuelle Zusammenstellung ist nicht nur extrem hoch, sondern auch fehleranfällig.

Durch den Pipeline-Ansatz wird die Service-Image-Erstellung in eine Ein-Klick-Trigger-Ausführung orchestriert, um automatisierte Verwaltungsprozesse zu erreichen, die ein notwendiges Funktionsmodul in der Microservice-Architektur darstellen.

2. Prozessdesign

Die Prozessknoten in diesem Artikel beziehen sich hauptsächlich auf das Paket Jar. Der Verarbeitungsablauf im Docker-Modul besteht hauptsächlich aus der Bildkonstruktionsverwaltung und dem Containerbetrieb: 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"
            }
        }

脚本说明:

  • 在流水线的工作空间创建目录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"
        }
    }
}

4、凭据配置

打开Manage Jenkins界面,Manage Credentials

  • Docker-Dateiverzeichnis und -Inhalt erstellen ;
  • Kopieren Sie das Jar-Paket und erstellen Sie eine Dockerfile-Skriptdatei
  • Führen Sie die Docker-Image-Erstellung aus und übertragen Sie sie in das Cloud Warehouse; >
  • Ziehen Sie die Bilddatei ab und führen Sie den Docker-Container aus
Der gesamte Prozess wird in der Pipeline platziert und nach der Generierung des lokalen Jar-Pakets verbunden.

3. Implementierungsprozess

1. Plug-in-Installation

Installieren Sie zunächst die relevanten Plug-ins, die von Docker in den Prozess integriert wurden: Docker Pipeline, Docker-Plugin , CloudBees Docker Hub/Registry-Benachrichtigung.

Im vorherigen Abschnitt zur Pipeline wurden der Gitee-Warehouse-Code-Pull und die lokale Verpackung über die Pipeline abgeschlossen. Als Nächstes beginnen wir mit der Verarbeitung des Docker-Links.

2. Bildkonstruktionsskript

Informationen zur Skriptsyntax von Dockerfile finden Sie auch im vorherigen Docker-Artikel:

GitEE·地址
https://gitee.com/cicadasmile/butte-auto-parent
Wiki·地址
https://gitee.com/cicadasmile/butte-java-note
Skriptbeschreibung:
  • Arbeiten Sie im Pipeline-Space-Erstellungsverzeichnis docker-app
  • Leeren Sie das Docker-Verzeichnis bei jeder Ausführung und fügen Sie dann das Jar-Paket und das Docker-Skript darin ein.
  • cat-EOF -EOF: Erstellen Sie eine Docker-Datei und schreiben Sie den mittleren Inhalt.
  • Der Inhalt des Skripts muss in die oberste Zeile der Datei geschrieben werden /ul>

    3. Packaging Push


    Hier geben Sie das Docker-Verzeichnis ein, führen den Image-Packing-Vorgang durch und übertragen das Image in das Cloud Warehouse. Viele Warehouses sind privat und erfordern eine Authentifizierung. rrreee

    4. Konfiguration der Anmeldeinformationen

    🎜Öffnen Sie die Benutzeroberfläche Anmeldeinformationen verwalten; 🎜🎜🎜🎜🎜Folgen Sie dem folgenden Konfigurationsprozess: 🎜 🎜🎜🎜🎜 4. Quellcode-Adresse🎜rrreee🎜Empfohlenes Lernen: „🎜Docker-Video-Tutorial🎜“🎜🎜

Das obige ist der detaillierte Inhalt vonTechnische Lösung: Pipeline integriert Docker-Container. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen