2017-12-31 60 views
0

두 개의 마이크로 서비스 이미지, Go Rest API 및 React 프론트 엔드가 AWS ECR 내에 있습니다. 나는 Elastic Beanstalk을 사용할 것이다. 이제 그들은 같은 시스템에 있다고 생각하기 때문에 localhost : 8080의 API에서 데이터를 가져 오도록 React 앱을 구성했습니다. 아래 둘 다에 대한 Dockerfiles 있습니다. 그들은 내 개발 환경에서 일 했으므로 ECR로 밀어 넣었습니다.AWS EB에서이 다중 컨테이너 도커 미세 서비스 응용 프로그램에 대한 dockerrun.aws.json을 만드는 방법을 알려 줄 사람이 있습니까?

Dockerfile Golang에 대한 나머지 API

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 나는 볼륨이 여전히 선언 할 필요가 있는지 알고, 또는 마운트 지점하지 않는

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 

을 프런트 엔드 응용 프로그램 반응에 대해 내가 아는 모든 I이다 v2에 dockerrun json의 버전과 컨테이너 정의의 이름, 이미지 및 포트 맵핑을 넣어야합니다. 대부분의 샘플은 개인 레포에서 앱을 보여주지 못하기 때문에 혼란스럽고 사용법을 이해하지 못하는 볼륨, 마운트 포인트, 링크가 있습니다. 나는 다음을 시도했지만이

편집을 작동하지 않았다 (나는 Dockerrun.aws.json는 볼륨 호스트 SourcePath를 내 컴퓨터의 경로로 예상 변경 내가 틀렸다면 수정하십시오.)

{ 
    "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

현재 오류 로그를 보는 방법을 알아 냈습니다. 위의 수정 사항을 확인하십시오. –