19
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ホストに設定したプロキシでdockerコンテナを動かす

Posted at

Dockerのコンテナをプロキシ環境下で動かそうとしたら色々苦労し、
それをまたプロキシの外でも動かそうとしたら色々面倒だったので書き留めようと思います。

Dockerfileで設定

やっぱり基本はDockerfile。
最初の一歩はこんな感じ

FROM node:argon
MAINTAINER micu

# set proxy
ENV http_proxy http://proxy.example.com:8888/
ENV https_proxy http://proxy.example.com:8888/

EXPOSE 8000 
CMD ["npm", "start"]

しかしこれでは常に同じプロキシサーバにアクセスすることになる。
同じ環境でしか使わないならいいけど、本番サーバにデプロイするとかなったら都合が悪い。

なので引数で渡すようにしてみる。

FROM node:argon
MAINTAINER micu

# set proxy
ARG http_proxy
ARG https_proxy
ENV http_proxy $http_proxy
ENV https_proxy $https_proxy

EXPOSE 8000 
CMD ["npm", "start"]

これでdocker buildするときに引数で渡してやればそのプロキシサーバが設定される。
そのコマンドは
docker build --build-arg http_proxy=http://proxy.example.com:8888/ --build-arg https_proxy=http://proxy.example.com:8888/ .
はっきり言って長い。

こんなの毎回打ち込みたくないし、そもそもホストマシンとコンテナでプロキシが違うことなんてまずないだろうに、
いちいちコンテナ用にプロキシのURLを入力するのはどうかと思う。

ホストの環境変数から直接渡す

というわけで、ホストの環境変数を使ってdocker buildを行うスクリプトを組んでみる

docker_build.sh
# !/bin/sh
name=$1

echo http_proxy:${http_proxy}
echo https_proxy:${https_proxy}
echo image_name:${name:-${USER}/myapp}

docker build --no-cache=true\
 --build-arg http_proxy=${http_proxy}\
 --build-arg https_proxy=${https_proxy}\
 -t ${name:-${USER}/myapp}\
 . 

ついでにイメージ名も勝手に適当なのをつけてくれるように

19
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?