编写脚本,拉取多个Harbor镜像

本文介绍了一个.sh脚本,用于自动化登录Harbor并从仓库拉取docker镜像,包括redis、minio、backend和frondend,同时配置了docker-compose.yml以启动这些服务。

创建.sh文件

#!/bin/bash

URL="http://ip地址"
IP="ip地址"
PORT="47070"
USER="登录账号"
PASS="登录密码"

echo "你的harbor地址为:"$URL
echo "你的harbor账号为:"$USER
echo "下面开始导入镜像,请稍等......"

docker login -u $USER -p $PASS $URL:$PORT

echo "开始拉取镜像"

#harbor上复制的下载路径
docker pull frondend
docker pull backend
docker pull minio
docker pull redis
docker pull mysql

echo "拉取完成,开始运行镜像"

docker-compose up -d

创建docker-compose.yml文件

version: "3"

services:
  redis:
    image: redis
    container_name: redis01
    ports:
      - "6389:6379" #访问的端口:映射的端口
  minio:
    image: minio
    container_name: minio01
    volumes:
      - /home/test/miniohost:/home/test/minio/data #本机路径:服务器路径
    environment:
     MINIO_ROOT_USER: "root"
     MINIO_ROOT_PASSWORD: "123456"
    ports:
      - "7099:7099"
      - "7090:7090" #minio需要有两个访问路径,web 7090 和api 7099
    command: server /data --console-address ":7090" -address ":7099"
  tasc_backend:
    image: backend
    container_name: backend01
    ports:
      - "4901:4900"
    depends_on:
      - redis
      - minio
  tasc_fronend:
    image: frondend
    container_name: frondend01
    ports:
      - "1021:1020"

在 Jenkins 中配置 Harbor 镜像仓库的命令,通常可以通过 Pipeline 脚本实现。该过程包括登录 Harbor 仓库、指定镜像,并运行容器。以下是一个完整的 Jenkins Pipeline 示例脚本,用于从 Harbor 镜像并部署容器。 ```groovy pipeline { agent any environment { // 定义Harbor相关参数 HARBOR_ADDR = 'your-harbor-address' HARBOR_PROJECT = 'your-project-name' HARBOR_IMAGE = 'your-image-name' IMAGE_VERSION = 'latest' HOST_PORT = '8080' CONTAINER_PORT = '8080' // 登录凭证 HARBOR_USER = credentials('harbor-username') // Jenkins 凭据ID HARBOR_PASS = credentials('harbor-password') } stages { stage('Pull Image from Harbor') { steps { script { try { // 登录 Harbor sh "docker login -u ${HARBOR_USER} -p ${HARBOR_PASS} ${HARBOR_ADDR}" // 拼接镜像名称 def imageName = "${HARBOR_ADDR}/${HARBOR_PROJECT}/${HARBOR_IMAGE}:${IMAGE_VERSION}" // 停止并删除正在运行的容器 sh ''' containerId=$(docker ps -a | grep ${HARBOR_IMAGE} | awk '{print $1}') if [ -n "$containerId" ]; then docker stop $containerId docker rm $containerId fi ''' // 删除已存在的镜像 sh ''' images=$(docker images | grep ${HARBOR_IMAGE} | awk '{print $2}') if [[ "$images" == *"${IMAGE_VERSION}"* ]]; then docker rmi $images fi ''' // Harbor 镜像 sh "docker pull ${imageName}" // 运行容器 sh "docker run -d --name ${HARBOR_IMAGE} -p ${HOST_PORT}:${CONTAINER_PORT} ${imageName}" } catch (Exception e) { echo "Error occurred: ${e}" currentBuild.result = 'FAILURE' } } } } } post { success { echo '成功从 Harbor 镜像并部署容器!' } failure { echo '构建失败,请检查日志以排查问题。' } } } ``` ### 说明: - **环境变量**:`HARBOR_ADDR`(Harbor 地址)、`HARBOR_PROJECT`(项目名)、`HARBOR_IMAGE`(镜像名)、`IMAGE_VERSION`(版本号)等定义了目标镜像的详细信息。 - **Jenkins 凭据管理**:使用 `credentials` 方法引用 Jenkins 的用户名和密码凭据,确保敏感信息不暴露在脚本中。 - **Docker 操作流程**: - 登录 Harbor 仓库; - 检查并清理旧容器与镜像; - 最新镜像; - 启动新的容器实例。 通过这种方式,可以在 Jenkins 中高效地完成从 Harbor 镜像并部署容器的任务[^5]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值