2017-12-31 3 views
0

Ich habe zwei Microservices Bilder, eine Go Rest API und ein React Frontend, die beide in meinem AWS ECR enthalten sind. Ich werde Elastic Beanstalk verwenden. Jetzt, da ich glaube, dass sie sich auf demselben Computer befinden, habe ich die React-App so konfiguriert, dass Daten von der API auf localhost: 8080 abgerufen werden. Unten sind die Dockerfiles für beide. Sie arbeiteten in meiner Entwicklungsumgebung, also drängte ich sie zu meinem ECR.Kann mir jemand sagen, wie man eine dockerrun.aws.json für diese Multicontainer Docker Microservices App in AWS EB erstellen?

Dockerfile für Golang Erholung 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 für Frontend App Reagieren

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 

Ich weiß nicht, ob die Lautstärke noch erklärt werden muss, oder die Einbindungspunkte, alles, was ich weiß, ist, ich Dort müssen Sie die Version von dockerrun json zu v2 und den Namen, das Image und das portsmapping in container Definition eingeben. Die meisten Samples sind verwirrend genug, da keiner von ihnen eine App aus dem privaten Repo zeigt und sie solche Volumes, Mountpoints, Links haben, die ich nicht wirklich verstehe. Ich habe versucht, unter den einen, aber es hat nicht funktioniert

Edit: (I geändert Dockerrun.aws.json Volume-Host SourcePath erwartet der Weg in meine Maschine zu sein Bitte korrigieren, wenn ich falsch bin.)

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

Habe ich die korrekten Werte für die Pfade angegeben?

Antwort

0

Ja, Sie müssen noch die Volumes und ihre Mountpunkte definieren, wenn Sie sie verwenden möchten. Hier ist eine umfassendere Anleitung meiner Meinung in Bezug auf die Einrichtung einer Multi-Container-Umgebung, direkt aus der offiziellen Dokumentation plus sie haben einen privaten Repository-Bereich. In der Hoffnung, dass dies hilft >>https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_v2config.html#create_deploy_docker_v2config_dockerrun Betrachten Sie auch EC2 Container Service (ECS), aber Elastic Beanstalk verwendet es im Hintergrund, um Multi-Container-Umgebungen auszuführen, könnte aber einfacher sein, sie direkt auf ECS auszuführen.

+0

Was muss ich im Quellpfad des Volumes angeben? der Name des Ordners, in dem sich die Quelle des Bildes befindet? oder der Build-Ordner? oder das ganze Projekt? Auch der Containerpfad der Mountpoints, was ist das? Ich habe es zuvor mit den Volumes und Bereitstellungspunkten versucht, aber die Bereitstellung schlägt fehl –

+0

Der Volume-Quellpfad ist der absolute Pfad des Ordners auf dem Host, den Sie an einen bestimmten Containerpfad (Ordner innerhalb des Containers) mounten möchten. Ich wäre daran interessiert, das Fehlerprotokoll zu sehen, wenn die Bereitstellung fehlschlägt. – ArnoldKO

+0

Ich bin gerade dabei, herauszufinden, wie die Fehlerprotokolle angezeigt werden, aber sehen Sie sich die obige Bearbeitung an –

Verwandte Themen