#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
.