Jér*_*VEL 18 docker asp.net-core
我正在尝试创建一个由4个项目组成的ASP.NET 5解决方案的图像.这是结构:
我有一个简单的Dockerfile,如下所示:
FROM microsoft/aspnet
COPY . /app
WORKDIR /app
RUN ["kpm", "restore"]
EXPOSE 5004
ENTRYPOINT ["k", "kestrel"]
Run Code Online (Sandbox Code Playgroud)
但不知道在哪里放.在我的解决方案的根文件夹中,global.json是在我的Project.json所在的Web Application文件夹中?当然我已根据此文件的位置对其进行了修改.
无论如何两者似乎都有效,因为它在运行命令时下载了我需要的所有库
docker build -t quizzcorrector.
我的问题是码头工人告诉我的那一刻
无法找到Models> = 1.0.0
无法找到FlashTools> = 1.0.0
无法找到QuizzService> = 1.0.0
我在这个帖子上看到https://github.com/aspnet/aspnet-docker/issues/19在多项目解决方案中我们应该运行命令"kpm pack"将我的应用打包成可部署和可运行的形式.
我找不到任何带有kpm pack命令的Dockerfiles的例子,只有文档:https://github.com/aspnet/Home/wiki/Package-Manager
我当然也尝试在我的Dockerfile中使用ADD或COPY命令将我的项目内容复制到容器的文件系统中,但仍然是同样的错误.
谢谢你的帮助
Ale*_*ich 26
更新时间:2018年2月14日
我之前的回答没有考虑编写Dockerfile的最佳实践.它也不适用于那些具有多个Web项目的解决方案,其中每个应用程序必须在单独的Docker容器中运行.更好的方法是在开发环境中构建和发布ASP.NET Core应用程序,并在Docker容器中运行应用程序,该容器已针对生产使用进行了优化.
将以下内容放入其中
FROM microsoft/aspnetcore
COPY ./publish /publish
WORKDIR /publish
EXPOSE 5000/tcp
ENTRYPOINT ["dotnet", "QuizzCorrector.dll"]
Run Code Online (Sandbox Code Playgroud)dotnet publish -c Release -o publish
docker build -t QuizzCorrector
请注意,microsoft/aspnetcore
Docker镜像是仅运行时映像,它不提供.NET Core SDK,使其更轻,更适合生产使用.
可能会迟到,但我会为那些仍在努力让它发挥作用的人回答这个问题.您需要在解决方案级别创建Dockerfile.然后,您需要更新您的工作文件夹以使用您的Web项目所在的文件夹.这是在最终的Dockerfile下面考虑到kpm
并且k
utilites被一个dotnet
工具替换.
FROM microsoft/dotnet:latest
COPY . /app
WORKDIR /app/src/QuizzCorrector
RUN ["dotnet", "restore"]
EXPOSE 5004
ENTRYPOINT ["dotnet", "run"]
Run Code Online (Sandbox Code Playgroud)
为了能够使用 ASP.NET CORE 1.0 在 DockerHub 中构建和运行多个 xprojects,我遇到了类似的问题。这使我来到这里并帮助了我。我的解决方案是这样的:
解决方案结构
```
Root
? AuthenticationService.sln
? Dockerfile
?
????src
? ?
? ????AuthenticationService
? ????DataAccess
? ????EntityDataModels
? ????Services
.
Run Code Online (Sandbox Code Playgroud)
Dockerfile:
FROM microsoft/dotnet:latest
COPY . /app
WORKDIR /app/src/AuthenticationService
RUN ["dotnet", "restore"]
WORKDIR /app/src/DataAccess
RUN ["dotnet", "restore"]
WORKDIR /app/src/EntityDataModels
RUN ["dotnet", "restore"]
WORKDIR /app/src/Services
RUN ["dotnet", "restore"]
WORKDIR /app/src/AuthenticationService
RUN ["dotnet", "build"]
EXPOSE 5000/tcp
ENV ASPNETCORE_URLS http://*:5000
ENTRYPOINT ["dotnet", "run"]
Run Code Online (Sandbox Code Playgroud)
小智 7
对于未来参考和任何具有相同问题的人.微软发布了搬运工集装箱DOTNET架构/ eShopOnContainers项目A样品dotnet的核心应用在这里
您可以参考链接或查找下面的示例
示例:
FROM microsoft/aspnetcore:2.0.3 AS base
WORKDIR /app
EXPOSE 80
FROM microsoft/aspnetcore-build:2.0 AS build
WORKDIR /src
COPY . .
RUN dotnet restore -nowarn:msb3202,nu1503
WORKDIR /src/src/Services/Basket/Basket.API
RUN dotnet build --no-restore -c Release -o /app
FROM build AS publish
RUN dotnet publish --no-restore -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "Basket.API.dll"]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
15302 次 |
最近记录: |