ডকার-রচনা কেন পাত্রে স্থানীয় ফাইল কপি করতে ব্যর্থ হয়


0

আমি VS2017 এর সাথে ডকার-রচনা সমর্থন সহ একটি সহজ ডটনেটকোর অ্যাপ্লিকেশন তৈরি করছি।

আমার দুটি ডকারফিল আছে, একটি অ্যাপ্লিকেশনের জন্য এবং একটি এনজিএনএক্সএক্স প্রক্সির জন্য। এর উপরে, একটি docker-compose.yml ফাইল রয়েছে যা উভয়কে একত্রিত করে।

এটি হ'ল ডিস্কেরফিল অ্যাপ্লিকেশন, সেখানে অনেক কপি বিবৃতি রয়েছে এবং তারা সবাই সঠিকভাবে কাজ করে!

FROM microsoft/dotnet:2.0-runtime AS base
WORKDIR /app

FROM microsoft/dotnet:2.0-sdk AS build
WORKDIR /src
COPY CoreServer.sln ./
COPY CoreServer/CoreServer.csproj CoreServer/
RUN dotnet restore -nowarn:msb3202,nu1503
COPY . .
WORKDIR /src/CoreServer
RUN dotnet build -c Release -o /app

FROM build AS publish
RUN dotnet publish -c Release -o /app

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

এটি nginx Dockerfile যা সঠিকভাবে ফাইল কপি পরিচালনা করতে পারে না। পরিবর্তে, এটি নিম্নলিখিত ত্রুটি আউটপুট করে:

কপি ব্যর্থ হয়েছে: stat /var/lib/docker/tmp/docker-builder780242597/nginx.conf: কোনও ফাইল বা ডিরেক্টরি নেই। # 1859

FROM nginx

WORKDIR /etc/nginx

COPY nginx.conf ./
COPY server.crt ./
COPY server.key ./

আমি নিজে এই ডকারফিল তৈরি করার চেষ্টা করেছি এবং এটি কাজ করে, কিন্তু যখন আমি ডকার-কম্পোজ ব্যবহার করি এটি উপরে ত্রুটি দেয়।

ডকার-কম্পোজ.কম ফাইলটি দেখতে কেমন

version: '3'

services:
  coreserver:
    image: coreserver
    build:
      context: .
      dockerfile: CoreServer/Dockerfile
    expose:
      - "5000"

  nginx:
    build: 
      context: .
      dockerfile: nginx/Dockerfile
    ports:
      - "80:80"
      - "443:443"
    links:
      - coreserver

আপনি পুরো প্রকল্পটি দেখতে চাইলে, এটি একটি সার্ভার এবং ক্লায়েন্ট অ্যাপ্লিকেশন সহ একটি ডটনেটcore ওয়েবক্যাট সার্ভার পরীক্ষা অ্যাপ্লিকেশন।

https://github.com/avboivin/WssCoreServer/tree/master/server

কেউ কি আমাকে বলবে যে আমি কি ভুল করছি, ডকার পাঠানোর এই বিশেষ ত্রুটিটি পাঠাতে?

উত্তর:


2

থেকে https://docs.docker.com/engine/reference/builder/#copy । বলেছেন:

কপি নিম্নলিখিত নিয়ম মেনে চলে:

  • [Src] পাথ বিল্ডের প্রেক্ষাপটে থাকা উচিত; আপনি কপি করতে পারবেন না ../something / something, কারণ ডকার বিল্ডের প্রথম পদক্ষেপটি ডক্সার ডেমনে প্রসঙ্গ ডিরেক্টরি (এবং সাবডিরেক্টরি) পাঠানো।

  • যদি [src] একটি ডিরেক্টরি হয়, তবে ডিরেক্টরি সিস্টেমের সম্পূর্ণ সামগ্রী অনুলিপি করা হয়, ফাইলসীম্যাট মেটাডেটা সহ।

তাই এটি বাগ হয় না। কপি আপনার পরম পথ থেকে ফাইল পড়তে পারবেন না।

তাই সমাধানটি আপনার ডোজার-কম্পোজ.এমএমএলকে আপনার SOURCE ডাই / ফাইলগুলির সাথে একই ডিরেক্টরিতে তৈরি করুন এবং এটি চালান।


1

এটি একটি বাগ মনে হবে।

আমি এখানে সমাধান খুঁজে পেয়েছি:

https://github.com/docker/for-mac/issues/1922#issuecomment-355364451

ডকার-কম্পোজ.ম্যামল ফাইলের রুট লেভেলে সমস্যাগুলি ছিল এমন ডকারফিলটি সরলভাবে সরানো যা যাচ্ছিল।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.