目录结构:

    1. [root@localhost Docker]# tree .
    2. .
    3. ├── dockerctl.sh
    4. ├── Dockerfile
    5. └── File
    6. ├── Readme.txt
    7. └── test.c
    8. 1 directory, 4 files

    Dockerfile文件:

    # 依赖的镜像
    FROM gcc:latest as test
    RUN mkdir /opt/File
    COPY ./File/test.c /opt/File
    WORKDIR /opt/File
    RUN gcc test.c -o test
    # CMD ["./test"]
    ENTRYPOINT ["./test", ">>log.txt"]
    
    # docker build -t test:v1
    

    File目录下test.c文件:

    #include <stdio.h>
    #include <time.h>
    
    int main(int argc, char* argv[])
    {
        while(1) {
            printf("hello world\n");
            usleep(1000*1000);
        }
        return 0;
    }
    

    自动打包脚本:

    #!/bin/bash
    container_name='test'
    image_name='test'
    image_version='v1'
    
    # start
    function start() {
        docker build -t ${image_name}:${image_version} --target test . &&
        echo "新镜像已构建成功!!!"
        docker run -itd ${image_name}:${image_version} &&
        echo "重新发布成功!!!"
    }
    # stop
    function stop() {
        container_id=`docker ps | grep ${container_name} | awk '{print $1}'`
        echo ${container_id}
        docker stop ${container_id}
        echo "容器已停止!!!"
        docker rm ${container_id}
        echo "旧容器已删除!!!"
    }
    # restart
    function restart() {
        container_id=`docker ps | grep ${container_name} | awk '{print $1}'`
        echo ${container_id}
        docker stop ${container_id}
        echo "容器已停止!!!"
        docker rm ${container_id}
        echo "旧容器已删除!!!"
        image_id=`docker images | grep ${image_name} | grep ${iamge_version} | awk '{print $3}'`
        docker rmi ${image_id}
        echo "旧镜像已删除!!!"
        docker build -t ${image_name}:${image_version} --target test . &&
        echo "新镜像已构建成功!!!"
        docker run -itd ${image_name}:${image_version} &&
        echo "重新发布成功!!!"
    }
    # run
    v1=$1
    function run() {
        if [ "$v1" == "start" ];then
            start
        elif [ "$v1" == "stop" ];then
            stop
        elif [ "$v1" == "restart" ];then
            restart
        else 
            docker ps
        fi
    }
    run
    

    测试结果:
    image.png