Dockerfile でどうやるのと思って調べた小さい話

このところ Docker やってます。前にやってたのが去年の10月でさすがに半年以上立ってるので進化していて Docker Hub ができてほんと助かります。 private な image の共有はサーバ自分で立てろ、とかだったので…。

Dockerfile 内で、 build を実行している環境の環境変数を参照したい

docker - Get environment variable value in Dockerfile - Stack Overflow

cat Dockerfile | envsubst | docker build -t my-target -

これ冴えてますよねえー。 envsubst yum も apt も gettext 入れると一発で入りました。ただ、標準入力から Dockerfile の内容を受け取る上の書式だと context 渡せないので、これで一回作って、さらに重ねる感じになりますかね…。

Dockerfile 内で、 build を実行している環境から SSH のエージェントフォワーディングをして RUN git pull とかしたい

コマンドの run ならできる。というか中に sshd 上がってるイメージに対して ssh -A すればいいんですけど、

How to SSH agent forward into a docker container

docker run --volume $SSH_AUTH_SOCK:/ssh-agent --env SSH_AUTH_SOCK=/ssh-agent ubuntu ssh-add -l

自分、 Docker コンテナの作成は今 EC2 上の Amazon Linux でやっているんですが、例えば build 中にコンテナ中で仕事の private リポジトリを git clone したいときに、鍵は手元の OSX にしかなくて、もちろんコンテナにも入れたくないし、という感じなのですよね…。 Dockerfile の VOLUME はホストとコンテナの共有には対応していないので、何かいい方法があるに違いない。