2015-08-14 11 views
5

Nota che il codice funziona perfettamente quando eseguo il codice sul mio laptop.Go & Docker: Sono in grado di eseguire un server Web go quando si utilizza stdlib, quando si verificano errori di pacchetti personalizzati

I seguenti due gruppi di codice verranno eseguiti sul mio laptop. Tuttavia, il secondo gruppo (che utilizza il mio pacchetto personalizzato) non funziona sulla finestra mobile Elastic Beanstalk.

standard Lib solo

import (
    "net/http" 
    "os" 
) 

func main() { 
    port := os.Getenv("PORT") 
    if port == "" { 
     port = "3000" 
    } 
    http.ListenAndServe(":"+port, nil) 
} 

Usi Pacchetto personale

import (
    "os" 

    "github.com/sim/handlers" 
) 

func main() { 
    port := os.Getenv("PORT") 
    if port == "" { 
     port = "3000" 
    } 
    handlers.ServeAndHandle(port) // wrapper of ListenAndServe 
} 

messaggi di errore:

riusciti a costruire Docker immagine aws_beanstalk/staging-app: andlers: stato di uscita 128 [0mtime = "2015-08-14T05: 08: 17Z" level = "info" msg = "Il comando [/ bin/sh -c go-wrapper download] ha restituito un codice diverso da zero: 1". Controllare i log di snapshot per i dettagli.

2015-08-14 01:08:15 UTC 0400 WARN riusciti a costruire Docker immagine aws_beanstalk/staging-app, riprovare ...

cron.yaml

version: 1 
cron: 
    - name: "task1" 
    url: "/scheduled" 
    schedule: "* * * * *" 
+0

Hai provato sul tuo computer con docker? Potrebbe essere semplicemente una dipendenza del pacchetto, che è presente sulla tua macchina, ma mancante nell'immagine della finestra mobile che hai usato nel beanstalk elastico. –

+0

Puoi pubblicare anche il tuo Dockerfile? – ydaetskcoR

+0

@ydaetskcoR Non ho una finestra mobile. Penso che il beanstalk elastico si prenda cura di te. Forse dovrei crearne uno. –

risposta

0

Avete bisogno di un Dockerfile o/e Dockerrun.aws.json per l'ambiente secondo la documentation

Dockerfile

FROM FROM golang:1.3-onbuild 

EXPOSE 3000 

CMD ["go run <your.go.file>"] 

Dockerrun.aws.json

{ 
    "AWSEBDockerrunVersion": "1", 
    "Image": { 
    "Name": "golang:1.3-onbuild", # <-- don't need this if you are using a Dockerfile 
    "Update": "true" 
    }, 
    "Ports": [ 
    { 
     "ContainerPort": "3000" 
    } 
    ], 
    "Logging": "/var/log/go" 
} 

Utilizzo della riga di comando per distribuire eb?