Docker-compose работает, но heroku.yml не работает?

У меня есть файл docker-compose, который отлично работает, и скрипт test-containers.ps1, который запускает docker-compose. Все отлично работает локально.

version: '3.4'

services:
  horizon.api.v1:
    image: ${DOCKER_REGISTRY-}horizonapiv1
    environment:
      ASPNETCORE_ENVIRONMENT: Development
    build:
      context: .
      dockerfile: api/horizon.api.v1/Dockerfile

Вот файл dockerfile, на который ссылаются файлы docker-compose и heroku.yml:

# horizon.api

FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM microsoft/dotnet:2.2-sdk AS build
WORKDIR /src
COPY api/horizon.api.v1/horizon.api.v1.csproj api/horizon.api.v1/
RUN dotnet restore api/horizon.api.v1/horizon.api.v1.csproj
COPY . .
WORKDIR /src/api/horizon.api.v1
RUN dotnet build horizon.api.v1.csproj -c Release -o /app

FROM build AS publish
RUN dotnet publish horizon.api.v1.csproj -c Release -o /app

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

Я хотел запустить это в Heroku, чтобы мои ученики могли видеть, как это работает, и чтобы студенты, у которых нет доступа к докеру, могли играть с приложением. Я сделал файл heroku.yml, который выглядит вроде должен работать... но это первый раз, когда я использую heroku, и, вероятно, я делаю что-то глупое.

build:
  config:
    ASPNETCORE_ENVIRONMENT: Development
  docker:
    api: ./api/horizon.api.v1/Dockerfile

Когда я пытаюсь отправить репозиторий на героку, я получаю следующую ошибку:

remote: Step 7/17 : COPY ["routing/horizon.routing/horizon.routing.csproj", "routing/horizon.routing/"]

remote: COPY failed: stat /var/lib/docker/tmp/docker-builder722311220/routing/horizon.routing/horizon.routing.csproj: no such file or directory

Я видел несколько сообщений в Интернете о том, что файл .dockerignore вызывает проблемы, поэтому я переименовал свой файл .dockerignore, чтобы убрать его из поля зрения, пока не выясню это.

Все пути должен верны, почему у docker-compose нет проблем с поиском необходимых путей на моем локальном компьютере, но heroku говорит, что их не существует? Что я делаю неправильно?

Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
1
0
1 251
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я считаю, что это, вероятно, связано с контекстом сборки. Я предполагаю, что Heroku не использует контекст из корня проекта и использует каталог, в котором находится Dockerfile.

Отлично спасибо. Это избавило меня от моей проблемы... и к другой. :)

J. Allen 26.02.2019 00:50

Другие вопросы по теме