2017-12-31 53 views
0

私は2つのマイクロサービス画像、Go Rest APIとReactフロントエンドをAWS ECR内に持っています。私はElastic Beanstalkを使用します。今私は彼らが同じマシン上にいると信じているので、Reactアプリケーションをlocalhost:8080上のAPIからデータを取得するように設定しました。以下は両方のDockerfilesです。彼らは私の開発環境で働いていたので、私はECRにそれらを押し込んだ。AWS EBでこのマルチコンテナドッカーのマイクロサービスアプリのdockerrun.aws.jsonを作成する方法を教えてもらえますか?

GolangのREST APIフロントエンドアプリケーションに反応

FROM node:8.4.0-alpine 
WORKDIR /usr/src/app 
ENV NPM_CONFIG_LOGLEVEL warn 
RUN npm i -g serve 
CMD serve -s build/app -p 3000 
EXPOSE 3000 
COPY package.json package-lock.json ./ 
RUN npm install 
COPY . . 
RUN npm run build 

ため

FROM golang 
ADD . /go/src/vsts/project/gorestapi 
WORKDIR /go/src/vsts/project/gorestapi 
RUN go get github.com/golang/dep/cmd/dep 
RUN dep ensure 
RUN go install . 
ENTRYPOINT /go/bin/gorestapi 
EXPOSE 8080 

DockerfileためDockerfileボリュームはまだ宣言する必要があり、またはマウントポイント場合、私は私が知っているすべては私で、知りませんdockerrun jsonのバージョンをv2に、名前、イメージ、およびポートマッピングをコンテナ定義に配置する必要があります。ほとんどのサンプルでは、​​プライベートレポのアプリを表示していないし、それらのボリューム、マウントポイント、リンクを持っていないので、使い方が分かりません。私は、以下のいずれかを試してみましたが、それは

編集]を動作しませんでした。(私はDockerrun.aws.jsonは、ボリュームのホストのソースパスは私のマシンでのパスであることを期待して変更私が間違っている場合は修正してください。)

{ 
    "AWSEBDockerrunVersion": 2, 
    "volumes": [ 
    { 
     "name": "webapp", 
     "host": { 
     "sourcePath": "/webapp" 
     } 
    }, 
    { 
     "name": "gorestapi", 
     "host": { 
     "sourcePath": "/gorestapi" 
     } 
    } 
    ], 
    "containerDefinitions": [ 
    { 
     "name": "gorestapi", 
     "image": "<acctId>.dkr.ecr.us-east-1.amazonaws.com/dev/gorestapi:latest", 
     "essential": true, 
     "memory": 512, 
     "portMappings": [ 
     { 
      "hostPort": 8080, 
      "containerPort": 8080 
     } 
     ], 
     "links": [ 
     "webapp" 
     ], 
     "mountPoints": [ 
     { 
      "sourceVolume": "gorestapi", 
      "containerPath": "/go/src/vsts/project/gorestapi" 
     } 
     ] 
    }, 
    { 
     "name": "webapp", 
     "image": "<acctId>.dkr.ecr.us-east-1.amazonaws.com/dev/webapp:latest", 
     "essential": true, 
     "memory": 256, 
     "portMappings": [ 
     { 
      "hostPort": 3000, 
      "containerPort": 3000 
     } 
     ], 
     "mountPoints": [ 
     { 
      "sourceVolume": "webapp", 
      "containerPath": "/usr/src/app" 
     } 
     ] 
    } 
    ] 
} 

パスに正しい値を指定しましたか?

答えて

0

ええ、ボリュームとマウントポイントを使用する場合は、それでも定義する必要があります。ここで私の意見では、マルチコンテナ環境を設定することに関して、より包括的なガイドがあります。正式な文書の外には、私的なリポジトリセクションがあります。ヘルプが役立つ>>https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_v2config.html#create_deploy_docker_v2config_dockerrun また、EC2コンテナサービス(ECS)を検討することを検討してください。しかし、Elastic Beanstalkはバックグラウンドでマルチコンテナ環境を使用しますが、ECSで直接実行する方が簡単です。

+0

ボリュームのソースパスには何を指定する必要がありますか?そのイメージのソースが置かれているフォルダの名前?またはビルドフォルダ?プロジェクト全体か?また、マウントポイントのコンテナパス、それは?以前ボリュームとマウントポイントで試してみましたが、展開に失敗しました –

+0

ボリュームソースパスは、指定されたコンテナパス(コンテナ内のフォルダ)にマウントするホスト上のフォルダの絶対パスです。私は、展開が失敗したときにエラーログを見ることに興味があります。 – ArnoldKO

+0

私は現在エラーログを見る方法を考えていますが、上記の編集を見てください –

関連する問題