首页 > 解决方案 > 我想问一下 docker volume

问题描述

我正在尝试将 docker 用于我的项目。这是我的码头工人撰写:

version: '3'
services:
api:
  build: Api/
  ports:
  - "8080:80"
  - "8081:443"
  environment:
    ASPNETCORE_URLS: "https://+;http://+"
    ASPNETCORE_HTTPS_PORT: "8081"
    ASPNETCORE_ENVIRONMENT: "Development"
  volumes:
    - ${APPDATA}\microsoft\UserSecrets\:/root/.microsoft/usersecrets
    - ${USERPROFILE}\.aspnet\https:/root/.aspnet/https/
server:
  build: Server/
  ports:
  - "8082:80"
  - "8083:443"
  environment:
    ASPNETCORE_URLS: "https://+;http://+"
    ASPNETCORE_HTTPS_PORT: "8083"
    ASPNETCORE_ENVIRONMENT: "Development"
  volumes:
    - ${APPDATA}\microsoft\UserSecrets\:/root/.microsoft/usersecrets
    - ${USERPROFILE}\.aspnet\https:/root/.aspnet/https/
    - ./../src/:/src/

还有我的服务器 dockerfile:

FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build-env
WORKDIR /app/server

# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore

# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out

# Build runtime image
FROM mcr.microsoft.com/dotnet/aspnet:5.0
WORKDIR /app/server
COPY --from=build-env /app/server/out .
ENTRYPOINT ["dotnet", "Server.dll"]

我想将文件夹 src 复制到 docker 中的容器。这是我在窗口中的身体:

samples:
   - server
     - Server.csproj
src:
   - ...

在 docker 中,这是我的容器结构:

app:
   - api:
   - server:
      - Server.csproj
src:

在我的 Server.csproj 中:

<ItemGroup>
  <ProjectReference 
   Include="..\..\src\suite\OpenIddict.UI.Suite.Core\tomware.OpenIddict.UI.Suite.Core.csproj" 
   />
  ...
</ItemGroup>

我注意到它能够将所有文件复制到 docker 的 src 文件夹中。但我仍然收到此错误:引用的项目 '../../src/suite/OpenIddict.UI.Suite.Core/tomware.OpenIddict.UI.Suite.Core.csproj' 不存在

请帮忙 !!!我被困了一个星期!!!!

标签: docker.net-coredocker-compose

解决方案


看起来您的一个项目不在docker context 范围内。所以你的复制命令COPY *.csproj ./看不到它。
据我了解,这个项目是某种核心库。在这种情况下,移动项目并不是最好的主意。相反,您可以考虑将其放入 nuget 包中,然后使用该包而不是项目引用。


推荐阅读