Kontext

Ich versuche, eine Aspnet Core Beispiel-App auf Heroku mit Docker bereitzustellen, ist es aber funktioniert nicht.

Repo: https://github.com/mykeels/sample-web-api < br /> Anleitung: https: // blog. devcenter.co/deploy-asp-net-core-2-0-apps-on-heroku-eea8efd918b6

Umgebung

Framework .NET Core 2.1.201
SO: W10 Build 17134.1
Docker: Docker für Windows Version 18.03.1-ce-win65 (17513)

Schritte, die ich getan habe

Dotnet veröffentlichen Bildbeschreibung hier eingeben

Docker-Build Bildbeschreibung hier eingeben

Heroku-Login Bildbeschreibung hier eingeben

Tag and Push Bildbeschreibung hier eingeben

Docker-Datei Bildbeschreibung hier eingeben

App auf Heroku Bildbeschreibung hier eingeben

Wird nicht ausgeführt Bildbeschreibung hier eingeben

Ich habe auch Folgendes versucht: Bildbeschreibung hier eingeben

Frage: Was ist los?

2
Carlos Henrique 23 Juni 2018 im 22:08

3 Antworten

Beste Antwort

LÖSUNG

Erstens: Ersetzen Sie die Befehle docker tag und docker push durch:

heroku container: push web -a <app-name>

Zu diesem Zeitpunkt stellte ich fest, dass die Heroku-Registrierung nicht hergestellt wurde.

Befehl zum Konfigurieren:

heroku container: login

Dieser Befehl funktioniert nur mit Windows auf dem Standardterminal (funktioniert nicht in cmder mit bash).

oder der Befehl

docker login --username = _ --password = $ (heroku auth: token) registry.heroku.com

Führen Sie nun einfach die folgenden Befehle aus.

Drücken Sie

heroku container: push web -a <app-name>
//example:
heroku container: push web -a sample-web-carlos

Release

heroku container: release web -a <app-name>
//example:
heroku container: release web -sample-web-carlos

Lesen Sie mehr:
https://github.com/heroku/heroku-container-registry / Issues / 45
https://devcenter.heroku.com/articles/container-registry-and- Laufzeit

Vielen Dank an Mohsin Mehmood für Ihre Hilfe!

1
Massimiliano Kraus 3 Feb. 2019 im 10:56

Hier ist eine andere Möglichkeit, wie Sie diese Arbeit mit Heroku machen können.

Erstellen Sie eine Docker-Datei im Stammverzeichnis Ihrer Lösung

#https://github.com/dotnet/dotnet-docker/tree/master/samples/aspnetapp

FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /app

COPY . .

CMD ASPNETCORE_URLS=http://*:$PORT dotnet [THE NAME OF YOUR FILE].dll

Erstellen Sie eine einfache Batchdatei (vorausgesetzt Windows-Betriebssystem) mit dem Namen " Publish.bat "

HINWEIS - Wenn dotnet clean ausgeführt wird, wird der Veröffentlichungsordner nicht bereinigt. Ich empfehle Ihnen, den Inhalt des Verzeichnisses vor der Veröffentlichung zu löschen. Sie können es nach Belieben zur Batch-Datei hinzufügen.

REM - This file assumes that you have access to the application and that you have docker installed
REM : Setup your applications name below
SET APP_NAME=""

REM - Delete all files and folders in publish
del /q ".\bin\Release\netcoreapp2.1\publish\*"
FOR /D %%p IN (".\bin\Release\netcoreapp2.1\publish\*.*") DO rmdir "%%p" /s /q

dotnet clean --configuration Release
dotnet publish -c Release
copy Dockerfile .\bin\Release\netcoreapp2.1\publish\
cd .\bin\Release\netcoreapp2.1\publish\
call heroku container:login
call heroku container:push web -a %APP_NAME%
call heroku container:release web -a %APP_NAME%

Führen Sie jetzt im Stammverzeichnis Ihrer Lösung einfach Publish.bat aus

c:\dev\my-amazing-app\publish.bat

Information:

6
anAgent 17 Nov. 2018 im 15:04

Ok, ich habe es geschafft, https://simple-web-mohsin.herokuapp.com herauszufinden / api / values ​​

  1. Keine ENTRYPOINT ["dotnet", "Blogifier.Web.dll"] Änderung erforderlich, wie oben vorgeschlagen.
  2. Nach dem Docker-Push-Befehl müssen Sie den Release-Befehl gemäß this ausführen

Führen Sie daher den folgenden Befehl nach dem Docker-Push-Befehl aus

heroku container:release web --app={app name}

Für meinen Fall war es

heroku container:release web --app=simple-web-mohsin

Hinweis: Word Web im obigen Befehl ist ein Prozesstyp und muss unverändert eingegeben werden.

0
Mohsin Mehmood 24 Juni 2018 im 09:12