2017-07-13 19 views
1

私はdocker-machineとdocker-composeを使って1つのec2インスタンスに2つのサービスを展開しようとしています。ここでdocker-machineでdocker-composeを実行しています

は私がやっているものです:

docker-machine create --driver amazonec2 --engine-install-url=https://web.archive.org/web/20170623081500/https://get.docker.com mymachine 

docker-machine ssh mymachine -- mkdir -p /home/ubuntu/myapp 

git clone https://github.com/myapp/service1.git 
docker-machine scp -r ./service1 mymachine:/home/ubuntu/myapp/ 
rm -rf ./service1 

git clone https://github.com/myapp/service2.git 
docker-machine scp -r ./service2 mymachine:/home/ubuntu/myapp/ 
rm -rf ./service2 

docker-machine env mymachine 
//export DOCKER_TLS_VERIFY="1" 
//export DOCKER_HOST="something" 
//export DOCKER_CERT_PATH="something" 
//export DOCKER_MACHINE_NAME="mymachine" 

eval $(docker-machine env mymachine) 

docker-machine active 
//mymachine 

docker-compose -f ./docker-compose-prod.yml up -d 

私はこのエラーを取得する:ドッカ - コン・prod.ymlのbuild path /home/ubuntu/myapp/service1 either does not exist, is not accessible, or is not a valid URL.

関連部品:

version: '3' 

services: 
    service1: 
    build: /home/ubuntu/myapp/service1 

    service2: 
    build: /home/ubuntu/myapp/service2 

パスは結構ですsshでチェックすると、docker-composeはまだローカルマシン上で作業しようとしているようですが、ローカルに存在するビルドパスを提供するとうれしいです。 Docker自体は、リモートマシン上でコマンドを実行します。

ドッカーをリモートドッカーマシンで実行するにはどうすればよいですか?

私はこれに新しいので、うまくいけば何かが些細なことを欠いている。 助けてくれてありがとう!

答えて

2

docker builddocker-compose buildを含む)は、「ビルドコンテキスト」を含みます。このコンテキストは、ビルドを実行するためにDockerfileを含め、クライアントからdockerエンジンに送信するために選択したすべてのファイルです。このコンテキストからファイルを削除するには、.dockerignoreファイルを使用します。

docker build /home/ubuntu/myapp/service1を実行する場合は、そのディレクトリをcompose.ymlファイルに含めて、クライアントからドッカーエンジンに送信するビルドコンテキストとして/ home/ubuntu/myapp/service1を定義します。そのエンジンは、ローカルまたはリモートノードである場合があります。これは、あなたの場合はec2インスタンスです。そこから、リモートで実行されます。このコンテキストを参照するDockerファイルには、COPYまたはADDコマンドが含まれます。

rmを実行するのではなく、ローカルマシンにコンテキストを残すか、ec2インスタンスにsshして、そのマシンでローカルにdocker-composeコマンドを実行することができます。ドッカーをインストールするには、デフォルトのマシンイメージに含まれているかどうかはわかりません)。私の好みは通常あなたのイメージを構築するために使用されるファイルの開発を容易にし、遠隔ドッカーマシンを一時的なものにすることができるので、前者です。

+0

ありがとうございます。私はそれが動作するはずの方法について間違った仮定をしたようだ – marton

関連する問題