Werckerのパイプライン内でDockerfileからコンテナをビルドする方法

Werckerはパイプラインの実行環境となっているコンテナからコンテナイメージを作るのがデフォルトの動きですが、なるべく軽量なコンテナにしたいなど、用途に最適化されたコンテナを作りたいという場合もあります。

そんなときは、コードリポジトリにDockerfileを入れておいて、それを使ってビルドすればOKです。

wercker.ymlの書き方は以下のような感じです。

box: alpine:3.6

build:
  steps:
    - internal/docker-build:
        name: build custom container.
        dockerfile: Dockerfile
        image-name: custom-container

    - internal/docker-push:
        name: push custom container.
        image-name: custom-container
        username: $REGISTRY_USERNAME
        password: $REGISTRY_PASSWORD
        repository: hhiroshell/custom-container
        tag: 1.0

internal/docker-build で所望のDockerのコンテキストでコンテナをビルドできます。 dockerfile: に設定しているのはDockerfileまでのパスです。パイプラインの実行中は、コードリポジトリのrootに当たるディレクトリがカレントになっています。上の例はコードリポジトリのrootの直下にDockerfileを置いておき、それを参照していることになります。

image-name:は後続のStepでイメージを操作したいときに、イメージを特定するための名前です。この例だと docker-push StepでビルドしたイメージをPushしています。

その他いろいろな設定が可能ですが、詳細は公式ドキュメントに詳しいです。