0

新しいイメージを作成するとき、私の Dockerfile は npm install を呼び出す必要があります。これは、プロキシの背後でも機能する必要があります。この時点で、次の Dockerfile コードが機能します。

# Set proxy server
ENV http_proxy http://myproxy.example
ENV https_proxy http://myproxy.example

# run NPM install
RUN npm install --production

ただし、セットアップしたdocker-machineと同じようにENV変数を設定できるようにしたいと思います

 docker-machine create \
 -d virtualbox \
 --engine-env HTTP_PROXY=http://myproxy.example \
 --engine-env HTTPS_PROXY=http://myproxy.example \
 dock

つまり、npm install コマンドがこれらの環境変数を使用することを望みます。これにより、この Dockerfile のイメージを、プロキシ設定が利用可能な任意の環境で構築できることが保証されます。

コマンドを使用して、作成したマシンをenvとして既に設定しています

docker-machine env --no-proxy dock
4

2 に答える 2

3

および同様のhttp_proxy変数は、Dockerfile で指定する必要のない定義済みの引数です。

Docker には、Dockerfile に対応する ARG 命令がなくても使用できる定義済みの ARG 変数のセットがあります。

  • HTTP_PROXY
  • http_proxy
  • HTTPS_PROXY
  • https_proxy
  • FTP_PROXY
  • ftp_proxy
  • NO_PROXY
  • no_proxy

それを使用するには、ビルド引数として次のように渡すだけです。

docker build \
  --build-arg http_proxy=http://myproxy.example \
  --build-arg https_proxy=http://myproxy.example \
  .

あなたのnpm install行では、それらはすでにあなたの環境にあるかもしれません。そうでない場合は、次を使用できるはずです。

RUN http_proxy=$http_proxy https_proxy=$https_proxy npm install --production

ENVイメージを実行する他の場所に悪影響を与える可能性があるため、これらをイメージに配置しないでください。

于 2017-10-20T13:20:03.417 に答える