如何將.net core 3.1網站應用程式透過container的方式部屬到heroku平台?
編輯Dockfile
.net core網站在docker容器內預設用80 port,但是Heroku平台容器會隨機指定一個port,並放入容器內環境變數 $PORT ,因此要修改網站的port為Heroku指定的port。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base WORKDIR /app
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build WORKDIR /src COPY ["myapp/myapp.csproj", "myapp/"] RUN dotnet restore "myapp/myapp.csproj" COPY . . WORKDIR "/src/myapp" RUN dotnet build "myapp.csproj" -c Release -o /app/build
FROM build AS publish RUN dotnet publish "myapp.csproj" -c Release -o /app/publish
FROM base AS final WORKDIR /app COPY --from=publish /app/publish . CMD dotnet myapp.dll --urls http://+:$PORT
|
部屬到Heroku
先在本地端建立image,name必須符合Heroku的規定,再使用Heroku CLI推上平台就部屬完成了。
1 2 3 4
| $ docker build -f .\myapp\Dockerfile -t registry.heroku.com/myapp/web . $ heroku container:login $ docker push registry.heroku.com/myapp/web:1.0 $ heroku container:release web -a myapp
|
參考資料