Skip to content

Instantly share code, notes, and snippets.

@angelobelchior
Created July 8, 2020 02:28
Show Gist options
  • Save angelobelchior/ece19ceab7079aa6a043da743ac28b48 to your computer and use it in GitHub Desktop.
Save angelobelchior/ece19ceab7079aa6a043da743ac28b48 to your computer and use it in GitHub Desktop.
#vai no repositório de containers da MS e baixa a imagem do aspnet dando o nome de base
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
#cria uma pasta chamada app dentro da "imagem"
WORKDIR /app
#expõe a porta 80 do container (HTTP)
EXPOSE 80
#expõe a porta 443 do container (HTTPS)
EXPOSE 443
#vai no repositório de containers da MS e baixa a imagem do donet core dando o nome de build
#isso é feito para compilar a versão da aplicação especificamente para o SO setado no docker
#(caso seja linux, é equivalente a algo como dotnet build --runtime ubuntu.xxxx) e não da forma híbrida
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
#cria uma pasta chamada src dentro da "imagem"
WORKDIR /src
#copia para a pasta src o conteúdo da pasta onde se encontra o dockerfile. Nesse caso, ele copia todo o código fonte da nossa aplicação
COPY . ./
#com todo código fonte copiado para a pasta src, é executado o comando de restore da solution
RUN dotnet restore "WebApplication1.sln"
#utiliza novamente o sdk do .netcore, mas dessa vez com o nome de publish
FROM build AS publish
#executa a publicação da aplicação na pasta app/publish
RUN dotnet publish "WebApplication1\\WebApplication1.csproj" -c Release -o /app/publish --no-restore
#utiliza novamente o aspnetcore, mas dessa vez com o nome de final
FROM base AS final
#vai para a pasta app
WORKDIR /app
#copia tudo que está na pasta publish/app para a pasta corrente da imagem /app
COPY --from=publish /app/publish .
#executa a aplicação
ENTRYPOINT ["dotnet", "WebApplication1.dll"]
#você precisa estar na pasta onde fica o dockerfile no terminal
#comando para fazer o build da imagem
# -t => target
# . é a pasta onde fica o dockerfile (no caso, no terminal, é preciso dar um cd para a pasta antes de executar esse comando)
#caso queria especificar o arquivo docker file, passar o parâmetro -f <<caminho do arquivo>>
#docker build . -t webapp:dev
#comando para executar o container
#-d roda como serviço (daemon)
#-p faz o mapeamento das portas da sua máquina para a porta do container -p PORTA DA SUA MÁQUINA : PORTA DO CONTAINER
#--name nome do container
#e por fim nome da imangem (caso tenha um label, setar depois dos :)
#docker run -d -p 8096:80 --name NomeDoContainer webapp:dev
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment