使用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
,但不知道原因。
答案 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"]