docker-composeのオペレーションに使えるシェルスクリプト
概要
docker-compose.ymlで開発環境とか使ってる際に使つとオペレーションが楽になるシェルスクリプトです。
他のリポジトリでもdocker-compose.ymlを使っていて、別の開発リポジトリのコンテナがすでに起動とかしていると docker-compose up -d
とかで起動に失敗することがあります。
また、動作がおかしくなったりして、一回イメージごとキレイにするのにいくつかコマンドを打つ必要があります。
そういった煩わしさをなくすために作りました。
改善余地はありますが、dockerコマンドを何個か叩くのを減らせますし、シンプルなのでわかりやすいかと思います。
動作環境
- MacOS (bashが動けばどこでも使えるかと思います。)
- Docker for Mac 18.09
使い方
docker-compose.yml
が存在するディレクトリに、下記スクリプトを配置します。
その後で下記スクリプトを dockerops.sh
などわかりやすいファイル名にします。
そのままだと実行権限が無いので、 chmod u+x dockerops.sh
とかしてあげると良いです。
その後で ./dockerops.sh -h
とかでヘルプを見つつ、必要なコマンドを実行します。
dockerops.sh
up () {
IMAGES=$(docker ps -q | wc -l)
if [ "${IMAGES}" -ge 1 ]; then
echo "現在起動しているコンテナを停止します..."
docker kill $(docker ps -q)
fi
echo "コンテナを起動します..."
docker-compose up -d
}
build() {
IMAGES=$(docker ps -q | wc -l)
if [ "${IMAGES}" -ge 1 ]; then
echo "現在起動しているコンテナを停止します..."
docker kill $(docker ps -q)
fi
echo "コンテナを作り直します..."
docker-compose build
echo "コンテナを起動します..."
docker-compose up -d
}
clean () {
IMAGES=$(docker images | awk '/docker_/ {print $1}' | wc -l)
if [ "${IMAGES}" -ge 1 ]; then
echo "コンテナとして使用できないイメージを削除します..."
docker image prune -f
echo "コンテナを停止します..."
docker kill $(docker ps -q)
echo "コンテナを削除します..."
docker rm -f $(docker ps -q -a)
echo "イメージを削除します..."
docker rmi -f $(docker images | awk '/docker_/ {print $1}')
fi
}
usage () {
echo $1
cat <<_EOF_
Usage:
$(basename $0) [OPTION]
Description:
"$(pwd)" のDockerのオペレーション用スクリプトです。
Options:
-u upを実行します。現在起動しているコンテナを停止して、"$(pwd)"にあるdocker-composeを起動します。
-b buildを実行します。コンテナのイメージの作り直しをします。Dockerfileを更新した場合はこちら。
-c cleanを実行します。コンテナのイメージを削除します。
-r cleanを実行してからupを実行します。なにかトラブルシュートなどできれいにしたい場合はこちら。
-h ヘルプを表示します。
_EOF_
exit 0
}
while getopts :ubcrh OPT
do
case $OPT in
u ) up;;
b ) build;;
c ) clean;;
r ) clean ; up;;
h ) usage;;
:|\? ) usage;;
esac
done
以上です。