2016-11-25 3 views
4

Ich folgte diesem Artikel https://devcenter.heroku.com/articles/container-registry-and-runtime und ich bin mit "Heroku Container: Push" stecken. Ich betreibe „Heroku Behälter: Push --app Mediabox“ und das Docker Bild richtig bauen und dann beginnen sie zu drücken, um die Registry und das ist, was ich bekommen:Heroku Docker Deployment

Successfully built 7926b98d51b5 
The push refers to a repository [registry.heroku.com/mediabox/web] 
38d48dd6de30: Preparing 
969058e6ddc9: Preparing 
2f454953e0e7: Preparing 
f67c1ecd32a1: Preparing 
44fade3982ca: Preparing 
0accb1c81980: Waiting 
e79bbdfaa0d3: Waiting 
1be5d1797b73: Waiting 
5c0a4f4b3a35: Waiting 
011b303988d2: Waiting 
error parsing HTTP 400 response body: unexpected end of JSON input: "" 
! Error: docker push exited with 1 

Das ist mein Dockerfile:

FROM ruby:2.3.1-alpine 

RUN apk --update --no-cache add build-base less libxml2-dev libxslt-dev nodejs postgresql-dev && mkdir -p /app 

WORKDIR /app 

COPY Gemfile Gemfile.lock ./ 

RUN gem install bundler 

RUN bundle 

COPY . ./ 

CMD ["script/docker-entrypoint.sh"] 

Ich kann hier die Lösung nicht finden. Danke für Ihre Hilfe.

+0

hast du das behoben? Ich sehe auch das gleiche Problem –

Antwort

0

Zunächst Docker Integration in Heroku ist in BETA, wie der Artikel, den Sie verlinkt sagt. Es kann immer noch einige Fehler haben. Vielleicht ist es eine gute Idee, sich direkt an den Heroku-Support zu wenden.

Angenommen, die Heroku-Integration und Ihr Code sind beide in Ordnung, kann ich nur vorschlagen, dass Sie aufhören, heroku container:push zu verwenden und nur die offiziellen docker-Befehle zu verwenden. Dies kann einige Probleme beim Schieben vermeiden.

können Sie das Bild bauen lokal mit:

docker build . 

Dann schieben Sie es auf Heroku mit:

docker tag <image> registry.heroku.com/<app>/<process-type> 
docker push registry.heroku.com/<app>/<process-type> 

I Produktionsumgebungen haben basierend auf Gitlab CI und Heroku Docker verwenden. Alle unsere Integration hängt nur von docker Befehlen ab, und wir haben nie irgendwelche Probleme mit dem Drücken von lokal erstellten Bildern erfahren.

+0

Thx für die Antwort. Ich habe das Heft auch auf heroku gepostet. Ich habe die manuelle Sachen wie Sie vorgeschlagen, aber immer noch das gleiche Problem: Fehler beim Analysieren HTTP 400 Antwort Körper: unerwartetes Ende der JSON-Eingabe: "" –

+0

Wirklich seltsam, HTTP 400 Suggested, dass Sie nicht die richtigen Parameter (Bad Params) aber es erklärt nicht genau, was passiert.Können Sie den vollständigen Docker-Push-Befehl posten, den Sie verwenden? –

0

Ich musste den App-Namen und nicht den internen Namen explizit übergeben, damit heroku container:push --app rocky-wildwood-86034 ging gut.

ich getan habe: Heroku Behälter: push --app mediabox

die richtige war: Heroku Behälter: push --app felsig-Wood-86034

Einfach die App-Name der global sein sollte Heroku-App-Name anstelle von dem, der in docker-compose.yml definiert wurde.

+0

Können Sie Ihre Antwort detailliert beschreiben? Veröffentlichen Sie den Unterschied zwischen dem Aufruf, der Ihnen einen Fehler sendet, und dem richtigen Befehl. –

+0

Siehst du es nicht? Ich schrieb, dass ich meinen internen App-Namen passierte, der falsch war, und ich sollte den tatsächlichen heroku App-Namen übergeben: Vorher: "heroku Behälter: push --app mediabox" Jetzt: "heroku Behälter: push - app felsig- Wildwood-86034 " Ich schrieb dies in meiner eigenen Antwort. –

+0

Sie haben die Antwort aktualisiert, nachdem Sie meinen Kommentar geschrieben haben. –

2

Ich hatte dieses Problem, als ich vergessen habe, heroku container:login zu laufen. Selbst wenn Sie bei Heroku angemeldet sind, erfordert der Heroku-Container-Service eine separate Anmeldung. Deshalb erhalten Sie den Fehler gleich zu Beginn des Uploads - Sie sind nicht autorisiert.

+0

Beachten Sie, dass Sie, wenn Sie mehrere Heroku-Konten auf der CLI verwenden, "heroku auth: whoami" ausführen möchten, um sicherzustellen, dass Sie bei dem Konto angemeldet sind, das Sie beim Drücken von Containern verwenden möchten. Das war heute Abend ein Auflegen für mich. – Brendan

0

Ich hatte den gleichen Fehler, als ich zuerst heroku container:login vergessen habe. Nicht sicher, ob das Problem durch denselben Benutzerfehler verursacht wurde.

1

registry.heroku.com/mediabox/web

einfach eine App mit dem Namen ‚Mediabox‘ erstellen, indem Sie von Heroku Dashboard und versuchen Sie es erneut Bild zu schieben, es funktioniert für mich.

Verwandte Themen