2016-11-23 6 views
2

Meine node.js-App besteht aus zwei Dingen, einem Express-Backend und einem Reagieren-Frontend.Elastic Beanstalk run post-Bereitstellungsskript

Ich habe zwei package.json Dateien in dieser Struktur

package.json 
/app/package.json 

Was will ich in meinem Frontend Ordner app ein Skript ausgeführt tun, dass mein Code erstellt. Das Skript, das ich ausführen möchte ist npm install und npm run build .

commands: 
    01_app_npm_install: 
     command: npm install 
     cwd: app/ 
    02_app_npm_build: 
     command: npm run build 
     cwd: app/ 

Aber es gibt eine Fehlermeldung, dass "Keine solche Datei oder DIREC Tory. 'App /'"

Ist dies möglich auf aws elastischen Bohnenstange?

Antwort

1

Dank @gustaf und einigen anderen Websites habe ich es geschafft, eine Lösung zusammen zu ziehen. Es ist nicht schön, aber es funktioniert.

habe ich eine Datei in .ebextensions/01_build.config

commands: 
    create_post_dir: 
    command: "mkdir /opt/elasticbeanstalk/hooks/appdeploy/post" 
    ignoreErrors: true 
files: 
    "/opt/elasticbeanstalk/hooks/appdeploy/post/99_build_app.sh": 
    mode: "000755" 
    owner: root 
    group: root 
    content: | 
     #!/usr/bin/env bash 
     cd /var/app/current/app/ 
     sudo /opt/elasticbeanstalk/node-install/node-v6.2.2-linux-x64/bin/npm install 
     sudo /opt/elasticbeanstalk/node-install/node-v6.2.2-linux-x64/bin/npm run build 

die Knoten-Version harte Kodierung ist nicht perfekt, aber es funktioniert jetzt.

+0

Ich glaube nicht, dass Sie dieses Verzeichnis erstellen müssen, es sollte schon da sein. Ich musste das in einer Python-Umgebung nicht machen. Sie können natürlich auch eine Datei in container_commands in dieses Verzeichnis verschieben, wenn Sie möchten. – Gustaf

0

Wenn Sie auf die Dokumente verweisen, finden Sie, dass container_commands ist, wo Sie die app related stuff setzen sollten.

Die Datei wird basierend auf der Präferenz verschiedener Teile ausgeführt, commands ist die erste und container_commands ist die letzte. Während dieser Phase wurde die App nicht an den gewünschten Speicherort kopiert (/var/app/current).

Wenn Sie Umgebungsvariablen festlegen, stehen diese auch nur unter container_commands zur Verfügung.

+0

Auch wenn ich es in container_commands ändern, kann es immer noch nicht das Verzeichnis app/finden. Ich habe die .config-Datei in einem Verzeichnis namens .exextensions, ist das korrekt? –

4

Ich habe nodejs nicht selbst mit Elastic Beanstalk gemacht, aber ich habe viel Django gemacht.

Der Abschnitt commands: wird ausgeführt, bevor die Projektdateien eingefügt werden. Hier können Sie beispielsweise Serverpakete installieren.

Der Abschnitt container_commands: wird in einem Bereitstellungsverzeichnis ausgeführt, bevor die Dateien an ihrem endgültigen Zielort abgelegt werden (der/var/app/current für nodejs erscheint). Hier können Sie Ihre Dateien bei Bedarf ändern.

Referenz für oben: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html

Sie können auch ein Post bereitstellen Skripte ausgeführt. Dies ist nicht sehr gut dokumentiert (zumindest war es nicht). Sie können so etwas tun:

files: 
    "/opt/elasticbeanstalk/hooks/appdeploy/post/99_restart_delayed_job.sh": 
     mode: "000755" 
     owner: root 
     group: root 
     content: | 
      #!/usr/bin/env bash 
      service httpd restart 
Verwandte Themen