2017-02-13 7 views
9

次のフォルダ構造(読みやすさのためにフォルダを最小限に抑えた)を持つ既存のgolangプロジェクトがあります。私のプロジェクトのWebサーバが./cmd/vanoにあるので cmdフォルダにgolang appをAWS Beanstalkに展開

- postgre 
    - service.go 
- cmd 
    - vano 
     - main.go 
    - vanoctl 
     - main.go 
vano.go 

は、今私は、カスタム BuildfileProcfileを作成する必要があります。

#!/usr/bin/env bash 

# Install dependencies. 
go get ./... 
# Build app 
go build ./cmd/vano -o bin/application 

、最終的には私のProcfile:

web: bin/application 

はだから今、私のフォルダ構造がどのように見えるので、私はここで

は私のビルドファイル

make: ./build.sh 

build.shファイルであることをやりましたこれは:

- postgre 
    - service.go 
- cmd 
    - vano 
     - main.go 
    - vanoctl 
     - main.go 
vano.go 
Buildfile 
build.sh 
Procfile 

私はgitのを使用して、ソースジップアップ:

git archive --format=zip HEAD > vano.zip 

そして、AWS豆の木にアップロードします。どのようにエラーが発生しても、AWSエラーは一番読みにくいようです。ここで

Command execution completed on all instances. Summary: [Successful: 0, Failed: 1]. 

エラーメッセージ

[Instance: i-0d8f642474e3b2c68] Command failed on instance. Return code: 1 Output: (TRUNCATED)...' Failed to execute 'HOME=/tmp /opt/elasticbeanstalk/lib/ruby/bin/ruby /opt/elasticbeanstalk/lib/ruby/bin/foreman start --procfile /tmp/d20170213-1941-1baz0rh/eb-buildtask-0 --root /var/app/staging --env /var/elasticbeanstalk/staging/elasticbeanstalk.env'. Hook /opt/elasticbeanstalk/hooks/appdeploy/pre/01_configure_application.sh failed. For more detail, check /var/log/eb-activity.log using console or EB CLI. 

余分なエラー情報私のエラーです:

Failed to execute 'HOME=/tmp /opt/elasticbeanstalk/lib/ruby/bin/ruby /opt/elasticbeanstalk/lib/ruby/bin/foreman start --procfile /tmp/d20170213-1941-1baz0rh/eb-buildtask-0 --root /var/app/staging --env /var/elasticbeanstalk/staging/elasticbeanstalk.env' 
+1

依存関係のインストールに失敗した可能性があります。 '/ var/log/eb-activity.log'ファイルで何を言いますか? – mass

+1

ベンダーに依存関係を確認してからコードを圧縮してみませんか? 'get get /。 'をする必要はありません。 –

+0

監督は失敗したようですが、Procfileは有効ですか? –

答えて

1

別のアプローチは、になりprocfileなど使用するのではなく、ここにあなたのバイナリ(通常はクロスコンパイルかなり手間がかかりません)、ガイドの簡単な手順に従ってアップロードしてください:

アプリケーションファイルのzipファイルをアップロードし、それはあなたのセットアップのみ実行するには、このつのバイナリを必要と仮定すると、動作するはずその後

GOARCH=amd64 GOOS=linux go build -o bin/application ./cmd/vano 

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/go-environment.html

あなたはただでそれをローカルにコンパイルすることができます。

+0

これは、私がそれが欲しかったやり方ではなく、私のアプリケーションにbinフォルダを追加するのが好きではないが、最も簡単な解決策であると思われる方法である。 – Rodrigo

+1

私はこれを使う解決策は個人的には非常に満足しています。あなたは最新のGo 1.8(AWSはGo 1.6ではありませんか?)を使用して、展開をスピードアップし、アップロード前にエラーをローカルで確認して修正できます。どこでも(GC、VPSなど)使用できるため、AWSインフラストラクチャへの依存度が低くなります。私はbinフォルダを気にしない:) –

+0

私はこの答えをチェックするつもりだが、それは完全に "答え"ているわけではないが、その解決策を提供している。 – Rodrigo

関連する問題