2017-04-13 70 views
14

Docker'ı oluşturduğumda bir hata alıyorum.ASP.NET Core'da docker yapılamıyor: "böyle bir dosya veya dizin yok" hatası

Sending build context to Docker daemon 3.584 kB 
Step 1/8 : FROM microsoft/aspnetcore:1.1 
---> 2628aaa7b8cf 
Step 2/8 : ENV ASPNETCORE_URLS "http://*:5000" 
---> Using cache 
---> 5dffde204fef 
Step 3/8 : ENV ASPNETCORE_ENVIRONMENT "Development" 
---> Using cache 
---> 3064358bc0eb 
Step 4/8 : ARG source 
---> Using cache 
---> 4159d0eb78c0 
Step 5/8 : WORKDIR /app 
---> Using cache 
---> 61a394c84304 
Step 6/8 : EXPOSE 5000 
---> Using cache 
---> c7c2309f7085 
Step 7/8 : COPY ${source:-obj/Docker/publish} . 
lstat obj/Docker/publish: no such file or directory 

İşte Dockerfile.

FROM microsoft/aspnetcore:1.1 
ENV ASPNETCORE_URLS="http://*:5000" 
ENV ASPNETCORE_ENVIRONMENT="Development" 
ARG source 
WORKDIR /app 
EXPOSE 5000 
COPY ${source:-obj/Docker/publish} . 
ENTRYPOINT ["dotnet", "ProjectTestApi.dll" 

ve ben bir komutu çalıştırın:

$ docker build -t my-docker-image-test . 

yanlış ne olduğu hakkında bir ide var mı?

+0

Çözümü denediniz mi? –

cevap

26

Bu, sizin çözümünüzü yayınlamadığınız için oluyor.

Varsayılan olarak
no such file or directory 

, eklediğinizde , bunlardan biri docker-compose.ci.build.yml destek ASP.NET Çekirdek Visual Studio 2017 projesi, bu docker-compose.yml dosyaların bir demet oluşturur size olduğunu Docker: hata mesajı kendini açıklıyor Bu, oluşturma işlemini ele alır. Sonra, Visual Studio ile proje oluşturduğunuzda, tam docker-compose boru hattı yürütülür.

docker-compose.ci.build.yml içeriği, buna benzemektedir (açıkça özel yapılandırma ve proje adlarının bağlıdır):

version: '2' 

services: 
    ci-build: 
    image: microsoft/aspnetcore-build:1.0-1.1 
    volumes: 
     - .:/src 
    working_dir: /src 
    command: /bin/bash -c "dotnet restore ./SolutionName.sln && dotnet publish ./SolutionName.sln -c Release -o ./obj/Docker/publish" 

son satırında görebileceğiniz gibi, aslında çağrılan bir dotnet publish komut vardır &, projenizi yayınlar.

Yani konuyla için çözüm, sadece çağırmadan docker önce projeyi inşa olacaktır: Eğer seçeneğini kullandığınızda

dotnet publish ./SolutionName.sln -c Release -o ./obj/Docker/publish 
docker build -t my-docker-image-test . 
+0

Aynı problemim var. Bu iki satırı nereye eklemeliyim? Projem için Dockerfile'da mı? – GSPdibbler

+1

@GSPdibbler Bunlar komut satırı komutlarıdır, böylece docker CLI'yi çalıştıracağınız yer. Muhtemelen bir yarasa dosyası. –

2

Visual Studio 2017 yılında "Docker Destek Ekle", VS bir demet oluşturur docker-compose dosyaları ve Dockerfiles. Marcin Zablocki'nin bahsettiği gibi bunlardan biri docker-compose.ci.build.yml.

Docker'ın felsefesiyle aynı çizgide kalmak için, projenizi yayınlamak için bir docker kabını kullanabilirsiniz. Projenizi yayınlamak için aşağıdaki adımları alacaktı:

  1. git clone/pull kök dir içine proje & cd
  2. docker-compose up

ile projenizi başlatın

  • docker-compose -f docker-compose.ci.build.yml up
  • ile projenizi yayınlayın ben Ana projenizin Dockerfile'un sorun yarattığı karşılaşılan durumlar. Bu, FROM microsoft/aspnetcore:1.1 ile gerçekleşir, bunu FROM microsoft/aspnetcore:1.1.2 olarak değiştirebilir veya projeniz için hangi sürüme gerek duyarsınız.