zoukankan      html  css  js  c++  java
  • shell脚本使用小记

    最新在用coding做项目管理,除了有git的代码管理外,还自带docker打包十分方便。但是每次打包完都要先从coding上把版本文件下载出来,然后再去服务器上删除原镜像后再运行版本文件里的代码更新docker却十分不方便。因此写了个小脚本代替手工操作,特此记录。

    先上代码:

     1 #!/usr/bin/env bash
     2 # clear docker cache
     3 if [ "`docker ps -a | grep 'docker-name'`" != "" ]; then
     4     docker kill docker-name && docker rm docker-name
     5 fi
     6 
     7 if [ "`docker images | grep 'docker-name'`" != "" ]; then
     8     docker images | grep 'docker-name' | awk '{print $3}' | xargs docker rmi
     9 fi
    10 
    11 # get latest docker files
    12 curl -L -u userName:passWord "https://xxx.pkg.coding.net/xxx/version/xxx.txt" | while read line
    13 do
    14     echo $line | sh
    15 done

    该小脚本分两个部分,先是清除原来的docker文件,然后是拉最新的更新脚本。

    清除docker文件

    if [ "`docker ps -a | grep 'docker-name'`" != "" ]; then
        docker kill docker-name && docker rm docker-name
    fi

    更新脚本里运行的docker都是有固定名字的,因此这里可以直接通过 docker kill name来结束掉docker并且删除容器。虽然不会影响脚本的执行,但如果本来就没有该容器时会报错,不美观。因此先判断该容器是否已存在,如果存在则干掉他。

    if [ "`docker images | grep 'docker-name'`" != "" ]; then
        docker images | grep 'docker-name' | awk '{print $3}' | xargs docker rmi
    fi

    删除掉容器后就是删除镜像,镜像只能通过IMAGE ID来删除,而IMAGE ID却是在第三列。

    因此除了先判断镜像是否存在外,还要通过awk分割脚本的输出来读取第三列上的IMAGE ID

    更新镜像

    curl -L -u userName:passWord "https://xxx.pkg.coding.net/xxx/version/xxx.txt" | while read line
    do
        echo $line | sh
    done

    通过curl命令从coding上拉取最新的更新脚本最里面有三行代码

    docker login
    docker pull
    docker run

    这里通过while read line一行行读出代码,并通过  $line | sh来执行

    至此,只要在coding上构建完最新的代码,然后在服务器上运行./update.sh即可。

  • 相关阅读:
    YOLO V2 代码分析
    HDU 1728 逃离迷宫【BFS】
    POJ 2987 Firing【最大权闭合图-最小割】
    POJ 2914 Minimum Cut【最小割 Stoer-Wangner】
    模拟C#的事件处理和属性语法糖
    c版基于链表的插入排序(改进版)
    一句话概述代码的用途
    用python实现的抓取腾讯视频所有电影的爬虫
    jquery 实现智能炫酷的翻页相册效果
    KISSY(JS)炫动导航,缓动应用实例(^_^)
  • 原文地址:https://www.cnblogs.com/shining77/p/12955566.html
Copyright © 2011-2022 走看看