docker-compose ОШИБКА: не удается найти указанный Dockerfile - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть проект .Net Core, который я хочу развернуть в производственной среде, но когда я пытаюсь построить его на своей капле, я получаю эту ошибку " ОШИБКА: невозможно найти указанный файл Dockerfile ".Я не мог понять, что не так с моими конфигурациями.

Структура проекта

project
│   project.sln
│   docker-compose.dcproj  
│   docker-compose.dev.yml
│   docker-compose.prod.yml 
│   docker-compose.yml
│
└───project.Web
│   │   (mvc-files)
│   │   .dockerignore
│   │   Dockerfile
│   │   project.Web.csproj
│   │
│   
└───project.Models
│
└───project.Services
│
└───project.Core

Dockerfile

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

FROM microsoft/dotnet:2.2-sdk AS build
WORKDIR /src
COPY project.Web/project.Web.csproj project.Web/
COPY project.Models/project.Models.csproj project.Models/
COPY project.Services/project.Services.csproj project.Services/
COPY project.Core/project.Core.csproj project.Core/
RUN dotnet restore project.Web/project.Web.csproj
COPY . .

WORKDIR /src/project.Web
RUN dotnet build project.Web.csproj -c Release -o /app

FROM build AS publish
RUN dotnet publish project.Web.csproj -c Release -o /app

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

docker-compose.yml

version: '3.7'

services:
  webapp:
    build:
      context: .
      dockerfile: project.Web/Dockerfile

Я выполняю эти коды в разных средах

docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d --build
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d --build

Этот docker-compose работает в локальной среде, но не работаетна Prod, не могу найти Dockerfile.Я проверил .dockerignore, если он содержит Dockerfile, но я не.Я пытался выполнить с этими конфигами, но все равно не повезло

 - context: .
   dockerfile: project.Web/Dockerfile

 - context: .
   dockerfile: Dockerfile

 - context: app/
   dockerfile: Dockerfile

 - context: app/project.Web/
   dockerfile: Dockerfile

РЕДАКТИРОВАТЬ: Я не думал, что файл dev или prod docker-compose являетсяпроблема, но добавление в любом случае.

docker-compose.dev.yml

version: '3.7'

networks:
  network-dev:
    driver: bridge

services:
  webapp:
    image: project
    container_name: container-webapp
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=http://+:80
    networks:
      - "network-dev"
    ports:
      - "80"
    depends_on:
      - "db"

  db:
    image: postgres:latest
    container_name: container-db
    environment: 
      - "POSTGRES_USER=username"
      - "POSTGRES_PASSWORD=password"
      - "POSTGRES_DB=projectdb"
    restart: always
    ports:
      - "13650:5432"
    networks:
      - "network-dev"

docker-compose.prod.yml

version: '3.7'

networks:
  network-prod:
    driver: bridge

services:
  webapp:
    image: alicoskun/project:latest
    container_name: container-webapp
    environment:
      - ASPNETCORE_ENVIRONMENT=Production
      - ASPNETCORE_URLS=http://+:80
    networks:
      - "network-prod"
    ports:
      - "80"
    depends_on:
      - "db"

  db:
    image: postgres:latest
    container_name: container-db
    environment: 
      - "POSTGRES_USER=username"
      - "POSTGRES_PASSWORD=password"
      - "POSTGRES_DB=projectdb"
    restart: always
    ports:
      - "13650:5432"
    networks:
      - "network-prod"

1 Ответ

0 голосов
/ 13 февраля 2019

Предполагая, что вы уже поместили образ alicoskun/project:latest в репозиторий, где ваша рабочая капля может его найти, вам не нужно включать файл docker-compose.yml как часть вашей команды docker-compose.Вместо этого просто запустите:

docker-compose -f docker-compose.prod.yml up -d --build

Включение docker-compose.yml в командной строке docker-compose потребует наличия Dockerfile, даже если оно не будет использоваться для построения системы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...