Code Monkey home page Code Monkey logo

dotnetcore-buildpack's Introduction

Heroku .NET Core Buildpack

This is the Heroku buildpack for ASP.NET Core.

Actions Status

The Buildpack supports C# and F# projects. It searchs through the repository's folders to locate a Startup.* or Program.* file. If found, the .csproj or .fsproj in the containing folder will be used in the dotnet publish <project> command.

If repository contains multiple Web Applications (multiple Startup.* or Program.*), PROJECT_FILE and PROJECT_NAME environment variables allow to choose project for publishing.

Usage

.NET Core latest stable

heroku buildpacks:set jincod/dotnetcore

.NET Core edge

heroku buildpacks:set https://github.com/jincod/dotnetcore-buildpack

.NET Core Preview release

heroku buildpacks:set https://github.com/jincod/dotnetcore-buildpack#preview

Previous releases

heroku buildpacks:set https://github.com/jincod/dotnetcore-buildpack#version

Available releases

More info

Entity Framework Core Migrations

You cannot run migrations with the dotnet ef commands using .NET Local Tools once the app is built. Alternatives include:

Enabling Automatic Migrations

  • Ensure there is a .NET local tool manifest file(dotnet-tools.json) which specifies the dotnet-ef tool:
dotnet new tool-manifest
dotnet tool install dotnet-ef
  • Ensure the ASPNETCORE_ENVIRONMENT environment variable is set to Production. ASP.NET Core scaffolding tools may create files that explicitly set it to Development. Heroku config will override this (heroku config:set ASPNETCORE_ENVIRONMENT=Production).
  • Configure your app to automatically run migrations at startup by adding the following to the .csproj file:
<Target Name="PrePublishTarget" AfterTargets="Publish">
  <Exec Command="dotnet ef database update" />
</Target>

Manually Running Migration Scripts on the Database

  • Manually run SQL scripts generated by Entity Framework Core in your app's database. For example, use PG Admin to connect your Heroku Postgres service.

Setting Connection String for heroku PostgreSQL

If you are using Heroku Postgres addon, then Heroku provides the database connection string as environment variable DATABASE_URL. In order to use this in an Npgsql connection string, do something like following:

using System.Text.RegularExpressions;

...

// Replace AppContext with your own DbContext Class
builder.Services.AddDbContext<AppContext>(options =>
{
  if (Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") == "Production")
  {
    var m = Regex.Match(Environment.GetEnvironmentVariable("DATABASE_URL")!, @"postgres://(.*):(.*)@(.*):(.*)/(.*)");
    options.UseNpgsql($"Server={m.Groups[3]};Port={m.Groups[4]};User Id={m.Groups[1]};Password={m.Groups[2]};Database={m.Groups[5]};sslmode=Prefer;Trust Server Certificate=true");
  } 
  else // In Development Environment
  {
    // So, use a local Connection
    options.UseNpgsql(builder.Configuration.GetValue<string>("CONNECTION_STRING"));
  }
});

Node.js and NPM

heroku buildpacks:set jincod/dotnetcore
heroku buildpacks:add --index 1 heroku/nodejs

Using Multiple Buildpacks for an App

herokuish support

heroku config:set HEROKUISH=true

Example

ASP.NET Core Demo App

Donation

If this project help you, you can give me a cup of coffee โ˜•

Donate

dotnetcore-buildpack's People

Contributors

jincod avatar friism avatar okgarces avatar wim-jan avatar mattwelke avatar bbatha avatar woehrl01 avatar matyapiro31 avatar ilyvion avatar dstj avatar evgenyt1 avatar ilagent avatar jayhelton avatar jkutner avatar nsrahmad avatar peter-mghendi avatar soldag avatar howsen82 avatar xt449 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.