Giter Site home page Giter Site logo

build-image's Introduction

dotnet build-image

A .NET global tool to create container images from .NET projects, because life is too short to write Dockerfiles.

  • The application image is built using a multi-stage build: first the application is published in an SDK image, and then the result is copied into a runtime image.
  • Images are chosen that support the .NET version targetted in the project (TargetFramework).
  • If a global.json file is present, it is used to determine the SDK image version.
  • The image base OS can be chosen.
  • Both podman and docker are supported to build the image.
  • Caches NuGet packages across builds.

Usage

Install the tool:

$ dotnet tool install -g dotnet-build-image

Create an app:

$ dotnet new web -o web
$ cd web

Build an image:

$ dotnet build-image
[1/2] STEP 1/5: FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build-env
[1/2] STEP 2/5: WORKDIR /app
--> Using cache 19c7be895c6c22f77f807ed3bb15f5f5b914899e9bbc76de8041bf68e391d4db
--> 19c7be895c6
[1/2] STEP 3/5: COPY . ./
--> 619d48ea256
[1/2] STEP 4/5: RUN dotnet restore .
  Determining projects to restore...
  Restored /app/web.csproj (in 158 ms).
--> 92b7017e3f7
[1/2] STEP 5/5: RUN dotnet publish --no-restore -c Release -o /app/out .
Microsoft (R) Build Engine version 17.1.0+ae57d105c for .NET
Copyright (C) Microsoft Corporation. All rights reserved.

  web -> /app/bin/Release/net6.0/web.dll
  web -> /app/out/
--> 08310738cee
[2/2] STEP 1/5: FROM mcr.microsoft.com/dotnet/aspnet:6.0
[2/2] STEP 2/5: WORKDIR /app
--> Using cache 9cb5e9baedc4fea3023f8f3d9874dfaac8580ab898fdcf5e21848291b640d85e
--> 9cb5e9baedc
[2/2] STEP 3/5: ENV ASPNETCORE_URLS=http://*:8080
--> 4fbf1b4d0be
[2/2] STEP 4/5: COPY --from=build-env /app/out .
--> bfaa4823a77
[2/2] STEP 5/5: CMD ["dotnet", "web.dll"]
[2/2] COMMIT dotnet-app
--> 7d160587c6b
Successfully tagged localhost/dotnet-app:latest
7d160587c6b0489b94eed5091c4561d77d214c01b114562a0f903d5294481732

Run the image:

$ podman run -p 8080:8080 dotnet-app

Options

$ dotnet build-image --help
Description:
  Build a container image from a .NET project.

Usage:
  build-image [<PROJECT>] [options]

Arguments:
  <PROJECT>  .NET project to build [default: .]

Options:
  -b, --base <base>                Flavor of the base image
  -t, --tag <tag>                  Name for the built image [default: dotnet-app]
  --push                           After the build, push the image to the repository
  --as-dockerfile <as-dockerfile>  Generates a Dockerfile with the specified name
  --version                        Show version information
  -?, -h, --help                   Show help and usage information

The --base option can be used to select the .NET base image. When not specified, Microsoft images from mcr.microsoft.com are used. When set to ubi, Red Hat images from registry.access.redhat.com are used. When set to another value, like alpine, the corresponding Microsoft images are used.

The options can also be specified in the .NET project file.

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    ...
    <ImageTag>myapp</ImageTag>
    <ImageBase>ubi</ImageBase>
  </PropertyGroup>

</Project>

build-image's People

Contributors

tmds 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.