docker
docker-compose

ホストマシンの環境変数(proxy周りとか)を反映したDockerfile/docker-compose.ymlを生成する

proxy環境下でdockerを使っているとあらゆるdocker imageにproxy設定しないといけないので面倒ですね。
ホストマシンの環境変数を反映したDockerfile/docker-compose.ymlを生成するツール、docker-envを使ってシュッとdocker runしましょう。

インストール

このページからプラットフォームにあったバイナリをダウンロードします。

golangの実行環境がある方は以下でもOKです。

$ go get github.com/mpppk/docker-env

使い方

docker-env <docker image名>を実行すると、ホストマシンの環境変数がひたすら設定されたDockerfileが生成されます。
全部は要らないので、--queryオプションで絞り込みましょう。-qでも大丈夫です。
例えばproxy関連の環境変数(HTTP_PROXY, HTTPS_PROXY, NO_PROXY)を設定したい場合、以下のようにします。(正規表現が使えます。)

$ docker-env -q proxy node:latest

これで以下のようなDockerfileが生成されます。

FROM node:latest
ENV HTTP_PROXY http://proxy.example.com
ENV HTTPS_PROXY http://proxy.example.com
ENV NO_PROXY willbeignored.com

--format-fオプションでcomposeを指定すると、docker-composeファイルが生成されます。

$ docker-env -q proxy -f compose node:latest redis:latest
services:
  nodelatest:
    environment:
      HTTP_PROXY: http://proxy.example.com
      HTTPS_PROXY: http://proxy.example.com
      NO_PROXY: willignore.com
    image: node:latest
  redislatest:
    environment:
      HTTP_PROXY: http://proxy.example.com
      HTTPS_PROXY: http://proxy.example.com
      NO_PROXY: willignore.com
    image: redis:latest
version: "3"

これでバリバリコンテナを立てられますね。
proxy周り以外でもdocker-envの良い使い方があれば教えてください。