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の良い使い方があれば教えてください。