[asp.net核心2.0和linux的docker]
我是docker的新手,并试图找出如何在我有2个项目的解决方案的情况下使用docker.我见过的所有教程都展示了单个项目.
所以,如果有人能够逐步展示解决方案,我会非常感激.
我有一个解决方案结构,如:
Solution.sln
|______WebAPIProject.csproj
|______ClassLibraryProject.csproj
Run Code Online (Sandbox Code Playgroud)
在Visual Studio中,我已经为解决方案添加了docker支持并获得了这些文件:
在WebAPIProject下,它创建了这个Docker文件:
FROM microsoft/aspnetcore:2.0
ARG source
WORKDIR /app
EXPOSE 80
COPY ${source:-obj/Docker/publish} .
ENTRYPOINT ["dotnet", "WebAPIProject.dll"]
Run Code Online (Sandbox Code Playgroud)
然后,在单独的docker-compose'项目'下,我得到了:
泊坞窗,compose.ci.build.yml
version: '3'
services:
ci-build:
image: microsoft/aspnetcore-build:1.0-2.0
volumes:
- .:/src
working_dir: /src
command: /bin/bash -c "dotnet restore ./Solution.sln && dotnet publish ./Solution.sln -c Release -o ./obj/Docker/publish"
Run Code Online (Sandbox Code Playgroud)
和docker.compose.yml文件
version: '3'
services:
WebAPIProject:
image: WebAPIProject
build:
context: ./WebAPIProject
dockerfile: Dockerfile
Run Code Online (Sandbox Code Playgroud)
我确信它的路径是微不足道的,但我只是迷失了所有这一切,所以如果有人能够对它有所了解?
我应该如何在项目文件中引用项目以便 Docker build 找到项目?
项目文件:
<ItemGroup>
<ProjectReference Include="..\Assets.Core\Assets.Core.csproj" />
<ProjectReference Include="..\Creator.Components\Creator.Components.csproj" />
<ProjectReference Include="..\LC.Components.Core\LC.Components.Core.csproj" />
<ProjectReference Include="..\LC.Components\LC.Components.csproj" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
Dockerfile:
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
WORKDIR /app
EXPOSE 80
EXPOSE 443
COPY *.csproj ./
RUN dotnet restore
COPY . ./
RUN dotnet publish -c Release -o out
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
WORKDIR /DIRPATH
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "Creator.Demo.dll"]
Run Code Online (Sandbox Code Playgroud)
输出:
正在确定要恢复的项目...正在跳过项目“C:\Assets.Core\Assets.Core.csproj”,因为找不到该项目。
正在跳过项目“C:\Creator.Components\Creator.Components.csproj”,因为找不到它。正在跳过项目“C:\LC.Components.Core\LC.Components.Core.csproj”,因为找不到它。正在跳过项目“C:\LC.Components\LC.Components.csproj”,因为找不到它。正在跳过项目“C:\Assets.Core\Assets.Core.csproj”,因为找不到它。
正在跳过项目“C:\Creator.Components\Creator.Components.csproj”,因为找不到它。正在跳过项目“C:\LC.Components.Core\LC.Components.Core.csproj”,因为找不到它。正在跳过项目“C:\LC.Components\LC.Components.csproj”,因为找不到它。恢复 C:\app\creator.demo.csproj(282 毫秒内)。