2017-04-13 14 views
14

Tôi nhận được một lỗi khi tôi xây dựng docker của tôi.Xây dựng docker trong ASP.NET Core: "không có tập tin hoặc thư mục" lỗi

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 

Đây là Dockerfile của tôi.

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" 

và tôi chạy một lệnh:

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

Bạn có bất cứ ide gì là sai?

+0

Bạn đã thử giải pháp của mình chưa? –

Trả lời

26

Điều này xảy ra vì bạn không xuất bản giải pháp của mình. Các thông báo lỗi là tự giải thích:

no such file or directory 

Theo mặc định, khi bạn thêm Docker hỗ trợ cho bạn ASP.NET Lõi Visual Studio 2017 dự án, nó tạo ra một loạt các docker-compose.yml tác phẩm, một trong số họ là docker-compose.ci.build.yml xử lý quá trình xây dựng. Sau đó, khi bạn xây dựng dự án thông qua Visual Studio, toàn bộ đường ống docker-compose được thực hiện.

Nội dung docker-compose.ci.build.yml, là tương tự như này (nó phụ thuộc vào tên cấu hình tùy chỉnh và dự án rõ ràng):

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" 

Như bạn có thể thấy trong dòng cuối cùng, có một lệnh dotnet publish gọi, mà thực sự xây dựng & xuất bản dự án của bạn.

Vì vậy, các giải pháp cho vấn đề của bạn, sẽ chỉ xây dựng dự án trước khi gọi Docker:

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

Tôi có cùng một vấn đề. Tôi nên thêm hai dòng đó ở đâu? Trong Dockerfile cho dự án của tôi? – GSPdibbler

+1

@GSPdibbler Đây là các lệnh dòng lệnh, vì vậy cùng một nơi bạn sẽ chạy CLI docker. Có lẽ là một tập tin dơi. –

2

Khi bạn sử dụng tùy chọn "Add Docker Hỗ trợ" trong Visual Studio 2017, VS tạo ra một loạt các docker-compose tập tin và Dockerfiles. Như Marcin Zablocki đã đề cập, một trong số này là docker-compose.ci.build.yml.

Để phù hợp với triết lý Docker, bạn có thể sử dụng vùng chứa đế để xuất bản dự án của mình. Để xuất bản dự án của bạn, bạn sẽ thực hiện các bước sau:

  1. git clone/pull bạn cd dự án & vào dir gốc
  2. Xuất bản dự án của bạn với docker-compose -f docker-compose.ci.build.yml up
  3. Bắt đầu dự án của bạn với docker-compose up

Tôi có gặp phải các tình huống trong đó Dockerfile của dự án chính của bạn đang gây ra sự cố. Điều này xảy ra với FROM microsoft/aspnetcore:1.1, bạn có thể thay đổi nó thành FROM microsoft/aspnetcore:1.1.2 hoặc bất kỳ phiên bản nào là cần thiết cho dự án của bạn.

Các vấn đề liên quan