2017-09-23 5 views
1

ドッカーマシン環境内の新しいドッカーイメージを構築している間、私はそれが実際のビルドプロセスを開始し、10〜12分間docker-compose build appコマンドが凍結する前にいることに気づい:Docker Composeビルドをより速くするには?

$ docker-compose build app 
Building app 

... 10 minutes ... 

Step 1/10 : FROM ruby:2.4.1 
---> e7ca4a0b5b6d 
... 

を、私はそれがより詳しく記述してください--verboseパラメータを使用しようとしましたが、あること実際には助けにはならなかった。

$ docker-compose --verbose build 
compose.config.config.find: Using configuration files: ./docker-compose.yml 
docker.auth.find_config_file: Trying paths: ['/Users/vtambourine/.docker/config.json', '/Users/vtambourine/.dockercfg'] 
docker.auth.find_config_file: Found file at path: /Users/vtambourine/.docker/config.json 
docker.auth.load_config: Couldn't find 'auths' or 'HttpHeaders' sections 
docker.auth.parse_auth: Auth data for {0} is absent. Client might be using a credentials store instead. 
compose.cli.command.get_client: docker-compose version 1.14.0, build c7bdf9e 
docker-py version: 2.3.0 
CPython version: 2.7.12 
OpenSSL version: OpenSSL 1.0.2j 26 Sep 2016 
compose.cli.command.get_client: Docker base_url: https://146.185.007.007:2376 
compose.cli.command.get_client: Docker version: KernelVersion=4.9.0-3-amd64, Arch=amd64, BuildTime=2017-09-05T19:58:57.182575033+00:00, ApiVersion=1.30, Version=17.06.2-ce, MinAPIVersion=1.12, GitCommit=cec0b72, Os=linux, GoVersion=go1.8.3 
compose.project.build: db uses an image, skipping 
compose.service.build: Building app 
compose.cli.verbose_proxy.proxy_callable: docker build <- (pull=False, cache_from=None, stream=True, nocache=False, labels=None, tag='aerostat:app', buildargs={}, forcerm=False, rm=True, path='/Users/vtambourine/Code/aerostat', dockerfile='containers/development/Dockerfile') 
docker.api.build._set_auth_headers: Looking for auth config 
docker.api.build._set_auth_headers: Sending auth config (u'auths') 
compose.cli.verbose_proxy.proxy_callable: docker build -> <generator object _stream_helper at 0x10b61f230> 

... 10 minutes ... 

Step 1/10 : FROM ruby:2.4.1 
---> e7ca4a0b5b6d 

を理解する方法はあります、何が起こって、どのように高速化ビルドプロセスを作ることですか?

+0

待機しているときに、CTRL + Cを押して例外トレースを取得してみてください。 –

+0

@タルン・ラルワニーいいえ、私は何も持っていない、ただ静かな停止。 – vtambourine

+0

composeフォルダに 'du -sh .'の出力はありますか? –

答えて

1

Tarun Lalwaniに大きな感謝私はDockerのコンテキストについて学びました。

ビルドコンテキストは、指定された場所にある一連のファイルです。私の(最も些細な)ケースの場所は単に. - プロジェクトディレクトリです。ビルドプロセスが最初に行うことは、コンテキスト全体をデーモンにコピーすることです。私はDocker Machineを使ってコンテナを配備しているので、Dockerデーモンはリモートホスト上にあり、プロジェクトフォルダ全体がインターネット経由でサーバに送られてしまいます。私は劇的にそれを軽減することができたシンプルな.dockerignoreルールを使用することにより

$ docker build -t my-app -f containers/production/Dockerfile . 
Sending build context to Docker daemon 187.9MB 

:生産フォルダのすべての不要で

、など .gittmp、合計サイズが道のほぼ200メガバイトだった

$ docker build -t my-app -f containers/production/Dockerfile . 
Sending build context to Docker daemon 151kB 

レッスンを受けました - .dockerignoreを使用してください。

詳細な説明はDockerfile referenceにあります。

関連する問題