Docker-compose расширяет параметры и относительные пути

#docker

#docker

Вопрос:

Я пытаюсь вызвать docker-compose из другого docker-compose, используя опцию extends. Однако, похоже, он не работает должным образом с относительными путями. Приведенная ниже ошибка — это то, что я получаю.

   Determining projects to restore...
  All projects are up-to-date for restore.
../../Interfaces/Proto/Sync/1.0 : warning : directory does not exist. [/src/SyncServer/SyncServer.csproj]
Could not make proto path relative : error : ../../Interfaces/Proto/Sync/1.0/greet.proto: No such file or directory [/src/SyncServer/SyncServer.csproj]

Build FAILED.

../../Interfaces/Proto/Sync/1.0 : warning : directory does not exist. [/src/SyncServer/SyncServer.csproj]
Could not make proto path relative : error : ../../Interfaces/Proto/Sync/1.0/greet.proto: No such file or directory [/src/SyncServer/SyncServer.csproj]
    1 Warning(s)
    1 Error(s)

Time Elapsed 00:00:01.59
ERROR: Service 'syncserver_mgr' failed to build : The command '/bin/sh -c dotnet build "SyncServer.csproj" -c Release -o /app/build' returned a non-zero code: 1
 

Часть вызывающего docker-compose, которая расширяет другой docker compose.

   syncserver_mgr:
     extends:
         file: C:QNMSSyncdocker-compose-sync-without-network-def.yml
         service: syncserver      
 

вызываемый файл docker-compose (docker-compose-sync-without-network-def.yml)

 version: '3.4'

services:
  syncserver:
    image: ${DOCKER_REGISTRY-}syncserver
    build:
      context: .
      dockerfile: SyncServer/Dockerfile
    networks:
      - syncNetwork   
 

Вызывается Dockerfile

 #See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["SyncServer/SyncServer.csproj", "SyncServer/"]
RUN dotnet restore "SyncServer/SyncServer.csproj"
COPY . .
WORKDIR "/src/SyncServer"
RUN dotnet build "SyncServer.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "SyncServer.csproj" -c Release -o /app/publish

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

RUN apt-get update
RUN apt-get install -y iputils-ping
 

Комментарии:

1. extends Ключевые слова устарели довольно давно. Вместо этого вам следует рассмотреть возможность использования нескольких файлов компоновки .

Ответ №1:

Файл компоновки , который вы расширяете , является версией 3.x . extends Ключевое слово поддерживается только до версии 2.1. Два файла должны иметь как минимум одну и ту же основную версию. Если вы хотите 3.4 конкретно использовать функции, например, оба файла должны иметь версию 3.4 .