2016-11-23 11 views
2

私のnode.jsアプリケーションは、エクスプレスバックエンドとリアクションフロントエンドの2つから構成されています。Elastic Beanstalk run post deployスクリプト

私は私が何をしたいのか、この構造では2つのpackage.jsonファイル

package.json 
/app/package.json 

を持っているが、私のコードをビルドし、私のフロントエンドフォルダ、アプリ、でスクリプトを実行しています。

実行したいスクリプトはnpm installnpm run build デプロイメントが発生した後にこのスクリプトを実行するにはどうすればよいですか?

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

しかし、それはというエラーを返す「そのようなファイルやDIREC トーリー: 『アプリ/』​​」

これはaws elastic beanstalkで可能ですか?

答えて

1

@gustafのおかげで、私は一緒に解決策を引っ張って管理し、いくつかの他のサイト:あなたはこのような何かを行うことができます。それはかなりではありませんが、それは動作します。

私は.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 

ノード・バージョンをハードコーディングでファイルを作成したが完璧ではないですが、それは今のところ動作します。

+0

私はあなたがそのディレクトリを作成する必要はないと思う、それはすでにそこにあるはずです。私はPython環境でこれを行う必要はありませんでした。あなたは明らかに、container_commands内のそのディレクトリにファイルを移動することもできます。 – Gustaf

0

ドキュメントを参照すると、container_commandsはアプリ関連のものを置くべき場所です。

ファイルは、さまざまな部分の優先度に基づいて実行されます.commandsが最初で、最後にcontainer_commandsが最後です。この段階では、アプリが目的の場所(/var/app/current)にコピーされていません。

また、環境変数を設定した場合は、container_commandsにのみ表示されます。

+0

私はcontainer_commandsに変更しても、それでもディレクトリapp /を見つけることができません。 .ebextensionsという名前のディレクトリに.configファイルがありますが、それは正しいですか? –

4

私はElastic Beanstalkでnodejsを自分で作成していませんが、私は多くのDjangoを行っています。

commands:セクションは、プロジェクトファイルが配置される前に実行されます。ここでサーバーパッケージをインストールできます。

container_commands:セクションは、ファイルが最終的な宛先に置かれる前にステージングディレクトリで実行されます(/ var/app/currentはnodejsのようです)。必要に応じてファイルを変更することができます。上記のため

参考: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html

また、ポスト配備スクリプトを実行することができます。これはあまりよく書かれていません(少なくともそれはそうではありませんでした)。

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 
関連する問題