DockerのMakefile

  • 23
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

dockerのコマンド

dockerのコマンドは繰り返し作業する割にはオプションが長いです。
コンテナ名など決めないとどんどん知らない名前が作られますし・・・
どこかで見たコードに Makefile でやっているのを見て自分も見よう見真似でどんどん追加して、現在の形になりました。

実行コマンド

中身はすべて docker のコマンドで書かれていますがパラメタをほとんど指定しなくて良いですし、違うイメージでもコマンドが統一されるのも良いですね。
特に docker runのコマンドは長いパラメタになるので短く打てて便利です。

イメージ構築

$ make build

コンテナ起動

長いパラメタを入力しなくて便利。

$ make start

コンテナ再起動

現在残っているコンテナを強制削除して新しく起動します。
コンテナを構築しているときは buildrestart の繰り返しになります。

$ make restart

不要イメージ、コンテナ削除

不要なイメージ、コンテナを削除、コンテナは -f オプションをしていないので現在動いているコンテナがある場合は削除でエラーになります。すべてのコンテナが止まっているときがいいでしょう。

$ make clean

その他

その他に stop logs attach がありますが $(NAME) を指定している以外はほとんどそのままです。

Makefileのテンプレート

Makefile
NAME=xxx
VERSION=xxx

build:
    docker build -t $(NAME):$(VERSION) .

restart: stop start

start:
    docker run -itd \
        -p xxx:xxx \
        -v xxx:xxx \
        --name $(NAME) \
        $(NAME):$(VERSION) bash

contener=`docker ps -a -q`
image=`docker images | awk '/^<none>/ { print $$3 }'`

clean:
    @if [ "$(image)" != "" ] ; then \
        docker rmi $(image); \
    fi
    @if [ "$(contener)" != "" ] ; then \
        docker rm $(contener); \
    fi

stop:
    docker rm -f $(NAME)

attach:
    docker exec -it $(NAME) /bin/bash

logs:
    docker logs $(NAME)

更新

  • attachを本当のattachから exec に変更。<ctrl+p> <ctrl+q> で抜けるのはいいけど、間違えて exit してしまうことがあるのでこっちかなぁ