2017-01-05 24 views
2

我問的原因是因爲我們正在使用AWS codebuild &我需要做數據庫遷移。如果數據庫遷移中斷,我想取消代碼生成回滾剛剛創建的遷移。我有這部分工作,我現在需要做的是取消dockerbuild中途。我怎樣才能做到這一點?如何強制使用bash命令取消dockerbuild?

這是我sh文件與knex遷移命令:

#!/bin/bash 
echo "running" 
function mytest { 
    "[email protected]" 
    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不會取消/打破泊塢窗構建。

我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 

回答

3

運行退出不會取消/打破泊塢窗構建。

運行exit 1應該

泊塢窗應在說Dockerfile的RUN shell腳本返回的錯誤代碼響應。

+0

太棒了!我到處尋找,找不到任何東西。我接近 – James111

+0

@ James111是的,你有一個類似的情況(相反的效果)在http://stackoverflow.com/a/30717108/6309 – VonC

+0

好知道:)如果這沒有記錄在碼頭上的某個地方頁面,我認爲它應該。我可以看到它適用於多種用途:D – James111