【问题标题】:How can I force cancel dockerbuild using bash a command?如何使用 bash 命令强制取消 dockerbuild?
【发布时间】:2017-01-05 05:42:08
【问题描述】:

我问的原因是因为我们正在使用 AWS 代码构建并且我需要进行数据库迁移。如果数据库迁移中断,我想取消代码构建并回滚刚刚进行的迁移。我已经完成了这部分工作,我现在需要做的就是中途取消 dockerbuild。我该怎么做?

这是我的带有 knex 迁移命令的 .sh 文件:

#!/bin/bash
echo "running"
function mytest {
    "$@"
    local status=$?
    if [ $status -ne 0 ]; then
        knex migrate:rollback 
      echo "Rolling back knex migrate $1" >&2
      exit
    fi
    return $status
}

mytest knex migrate:latest 

运行 exit 不会取消/中断 docker 构建。

我的 Dockerfile(以防万一):

FROM node:6.2.0

# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

# Install app dependencies
COPY package.json /usr/src/app/
RUN npm install

# Bundle app source
COPY . /usr/src/app
RUN chmod +x /usr/src/app/migrate.sh
RUN /usr/src/app/migrate.sh


EXPOSE 8080

CMD npm run build && npm start

【问题讨论】:

    标签: bash docker


    【解决方案1】:

    运行退出不会取消/中断 docker 构建。

    运行exit 1 应该

    Docker 应该响应上述 Dockerfile 中 RUN shell 脚本返回的错误代码。

    【讨论】:

    • 太棒了!我到处找,找不到任何东西。虽然我很接近
    • @James111 是的,你在stackoverflow.com/a/30717108/6309中也有类似的情况(效果相反)
    • 很高兴知道 :) 如果这在 docker 页面上的某处没有记录,我认为应该这样做。我可以看到它有多种用途:D
    猜你喜欢
    • 2018-11-25
    • 2011-12-02
    • 1970-01-01
    • 1970-01-01
    • 2013-05-28
    • 2015-12-14
    • 2017-06-12
    • 1970-01-01
    相关资源
    最近更新 更多