VS2017 Asp.net核心与Linux docker

时间:2018-03-12 07:44:05

标签: docker asp.net-core docker-compose

使用Linux容器创建一个新的Asp.net Core项目:

Dockerfile:

FROM microsoft/aspnetcore:2.0 AS base
WORKDIR /app
EXPOSE 80

    FROM microsoft/aspnetcore-build:2.0 AS build
    WORKDIR /src
    COPY *.sln ./
    COPY WebApplication1/WebApplication1.csproj WebApplication1/
    RUN dotnet restore
    COPY . .
    WORKDIR /src/WebApplication1
    RUN dotnet build -c Release -o /app

    FROM build AS publish
    RUN dotnet publish -c Release -o /app

    FROM base AS final
    WORKDIR /app
    COPY --from=publish /app .
    ENTRYPOINT ["dotnet", "WebApplication1.dll"]

搬运工-compose.yml:

version: '3'

services:
  webapplication1:
    image: corewithdocker
    build:
      context: .
      dockerfile: WebApplication1/Dockerfile

运行应用程序后,它会创建corewithdocker:dev image,然后我调用docker run -p 8888:80 corewithdocker:dev,容器立即退出,为什么? ENTRYPOINT是["dotnet", "WebApplication1.dll"],容器是否应该继续运行? (手动调用dotnet webapplication1.dll,除非按ctrl + c,否则它会继续运行。)

如果我致电docker run -dit -p 8888:80 corewithdocker:dev,则容器已启用,但我无法访问localhost:8888,但不知道原因。

1 个答案:

答案 0 :(得分:0)

此行是“来自microsoft / aspnetcore:2.0 AS基础WORKDIR / app EXPOSE 80”的dockerfile部分。无论哪种方式,端口80都不会在docker镜像中显示,因此在尝试将端口8080绑定到内部端口80时,您的映像已存在。 将行公开80添加到您的docker文件。

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
EXPOSE 80
ENTRYPOINT ["dotnet", "WebApplication1.dll"]