chmod ডকারে সঠিকভাবে কাজ করছে না


19

আমি আমার Symfonyঅ্যাপ্লিকেশনটির জন্য একটি ডকার চিত্র তৈরি করছি এবং ক্যাশে এবং লগ ফোল্ডারে লেখার জন্য আমাকে অ্যাপাচি সার্ভারের অনুমতি দেওয়া দরকার

#Dockerfile
FROM php:7-apache

RUN apt-get update \
&& apt-get install -y libicu-dev  freetds-common freetds-bin unixodbc \
&& docker-php-ext-install intl mbstring \
&& a2enmod rewrite

COPY app/php.ini /usr/local/etc/php/
COPY app/apache2.conf /etc/apache2/apache2.conf
COPY ./ /var/www/html

RUN find /var/www/html/ -type d -exec chmod 755 {} \; 
RUN find /var/www/html/ -type f -exec chmod 644 {} \;
RUN chmod -R 777 /var/www/html/app/cache /var/www/html/app/logs

আমি যখন এই ছবিটি নির্মাণের docker build -t myname/symfony_apps:latest .সঙ্গে ধারক চালানো docker run -p 8080:80 myname/symfony_apps:latest। অনুমোদনের ত্রুটিগুলি অস্বীকার করে অ্যাপাচি লগ প্লাবিত হয়, আমি যে আজব জিনিসটি পরীক্ষা করেছি ls -aএবং অনুমতিগুলি ঠিক আছে fine এবং আমি যখন কনটেইনার বাশ থেকে চিমড চালাই তখন অ্যাপাচি অনুমতি সংক্রান্ত সমস্যাগুলি চলে যায় এবং অ্যাপটি ভালভাবে কাজ করে

পরিস্থিতি

ডকফেরাইল থেকে chmod কমান্ড চালানো: অনুমতিগুলি পরিবর্তন করা হয়েছে তবে অ্যাপাচি এখনও অনুমতি অস্বীকার করার বিষয়ে অভিযোগ করে। ধারকটির ভিতরে বাশ সহ chmod একই কমান্ডগুলি চালনা করা হচ্ছে: অনুমতিগুলি পরিবর্তিত হয়েছে এবং আমার অ্যাপটি চলছে

কোন ধারণা, আমি কি কিছু মিস করছি, ডকফাইলে কোথাও আমার রুট ব্যবহারকারী যুক্ত করা উচিত?


আপনার ডকার কমান্ডটি বিল্ট ইমেজটি চালায় এটি দেখতে সহায়ক হবে।
মাইক 13

আমি আপনার শেষ কমান্ডে একটি অতিরিক্ত স্থান দেখছি (আমি আমার ফোনে আছি, সুতরাং আমি নিশ্চিত হতে পারি না)। লগ ডিরেক্টরিতে যেমন অনুমতি সমস্যা রয়েছে বলে মনে হচ্ছে, শেষ লাইনটি এতে পরিবর্তন করুন: UN `` RUN chmod -R 777 / var / www / html / app / cache / var / www / html / app / logs `` `
মাইকে

1
ঠিক আছে .. আমি প্রশ্নটি সম্পাদনা করেছি :)
ঝড়

সেই অতিরিক্ত স্থানটি ছিল টাইপো
ঝড়

আমি আপনার সমস্যার পুনরুত্পাদন করতে অক্ষম। যদি আমি আপনার ডকস্পাইল ব্যবহার করি এবং স্থানীয়ভাবে কয়েকটি ডামি ফাইলগুলি সেট আপ করি তবে অনুমতিগুলি সঠিক এবং সবকিছু ঠিকঠাক কাজ করে। আমি একটি ব্রাউজারের মাধ্যমে একটি ধারক বুট করতে এবং সামগ্রী অ্যাক্সেস করতে পারি। নির্দিষ্ট ত্রুটি বার্তাগুলি অন্তর্ভুক্ত করতে আপনি কি আপনার প্রশ্ন আপডেট করতে পারবেন? আপনি কি নিশ্চিত যে আপনার অ্যাপাচি কনফিগারেশন ( apache2.conf) সমস্যা তৈরি করছে না? ইনস্টল না করলে ত্রুটিগুলি কি চলে যায় apache2.conf?
অগস্ট

উত্তর:


16

আমারও একই সমস্যা ছিল এবং মনে হচ্ছে ডকের বা ওভারলে 2 তে কিছু বাগ রয়েছে যদি ডিরেক্টরি সামগ্রী একটি স্তরতে তৈরি হয় এবং এর অনুমতিগুলি অন্যটিতে পরিবর্তিত হয়।

কাজের ভিত্তিতে আপনি অস্থায়ী ডিরেক্টরিতে উত্স অনুলিপি করতে পারেন:

COPY . /src

এবং তারপরে এটিকে সরান /var/www/htmlএবং অনুমতিগুলি সেট আপ করুন (এক RUNআদেশে):

RUN rm -rf /var/www/html && mv /src /var/www/html &&\
    find /var/www/html/ -type d -exec chmod 755 {} \; &&\
    find /var/www/html/ -type f -exec chmod 644 {} \; &&\
    chmod -R 777 /var/www/html/app/cache /var/www/html/app/logs

এছাড়াও আমি গিটহাব ইস্যু তৈরি করেছি ।


আমি এই রাতে আমার পুরানো উত্স কোডটি খনন করতে যাচ্ছি এটি কীভাবে সমাধান করেছি তা দেখতে, তখন আমি সেই টিএমপি ডিরেক্টরি কৌশলটি মনে রেখেছিলাম .. আশা করি এটি আপনাকে এক্সডি সমাধান করতে অনেক সময় নেয় নি
ঝড়

7

ডকারে রুনের ডিফল্ট শেলটি হ'ল / বিন / শ এবং এইখানেই অনুমতিগুলি সঠিকভাবে সেট করা না হওয়ায় বাস্তবে সমস্যা আছে।

তবে আপনি সহজেই সংশোধন করার পরিবর্তে কেবলমাত্র / বিন / ব্যাশ ব্যবহার করতে পারেন, ডিরেক্টরি তালিকার আগে এবং পরে লক্ষ্য করুন

Step 7/9 : RUN /bin/bash -c 'ls -la; chmod +x gitlab-properties-builder.sh; ls -la'
---> Running in dc57ae77aa67

drwxr-xr-x. 3 root root      103 Mar  8 17:56 .
drwxr-xr-x. 1 root root       46 Mar  8 17:57 ..
drwxr-xr-x. 2 root root        6 Mar  7 20:47 config
-rw-r--r--. 1 root root     2340 Mar  7 21:20 gitlab-properties-builder.sh
-rw-r--r--. 5 root root 57325770 Mar  5 14:39 gitlab-scm-collector-2.0.5-SNAPSHOT.jar

drwxr-xr-x. 1 root root       42 Mar  8 17:56 .
drwxr-xr-x. 1 root root       61 Mar  8 17:57 ..
drwxr-xr-x. 2 root root        6 Mar  7 20:47 config
-rwxr-xr-x. 1 root root     2340 Mar  7 21:20 gitlab-properties-builder.sh
-rw-r--r--. 5 root root 57325770 Mar  5 14:39 gitlab-scm-collector-2.0.5-SNAPSHOT.jar
---> 8b5de6e348d3

2
/bin/bash -c 'chmod +x file'কাজ করছে কেন /bin/sh -c 'chmod +x file'?
ঝড়

আপনার ভাল সমাধান। এটা আমার জন্য কাজ করে। ধন্যবাদ
ব্যবহারকারী 1427944

এছাড়াও, নতুন বিল্ডকিট ব্যবহার করা এটির সহ বেশ কয়েকটি ক্ষেত্রে সহায়তা করে। একবার চেষ্টা করে দেখো. docs.docker.com/develop/develop-images/build_enhancements
থাড

6

যুক্ত করার চেষ্টা করুন:

USER root

এটা আমার জন্য কাজ করেছে।


এটি গ্রহণযোগ্য উত্তর হওয়া উচিত।
ভ্লাদিমির কর্নিয়া

2
আপনি যদি রুটে স্যুইচ করেন তবে শেষ করার পরে আপনার সম্ভবত সম্ভবত আগের ব্যবহারকারীর কাছে ফিরে যেতে হবে বা আপনি ধারকটির সুরক্ষা এবং সামঞ্জস্যতা হ্রাস করছেন। ডিফল্টরূপে কিছু কুবেরনেটস প্রয়োগগুলি উদাহরণস্বরূপ রুট হিসাবে কোনও ধারক চালাবে না।
ফ্লিকফার্লি

2

এই ইস্যুটি সম্ভবত VOLUMEপ্রবাহিত ডকফেরফিলের অভ্যন্তরে সংজ্ঞার ফলাফল । ডকফেরলে যখন একটি ভলিউম সংজ্ঞায়িত করা হয়, আপনি সরাসরি ছবিতে একটি COPYবা ADDকমান্ডের সাহায্যে ফাইল যুক্ত করতে পারেন । তবে, একটি RUNলাইন করবে:

  • ডকফাইলের বর্তমান বিন্দু হিসাবে চিত্র সংজ্ঞা ব্যবহার করে একটি অস্থায়ী ধারক তৈরি করুন
    • এই অস্থায়ী পাত্রে আপনার বা ডকফায়াইলের মধ্যে নির্দিষ্ট করা কোনও পিতামাতার চিত্র হিসাবে অজ্ঞাতনামা ভলিউম মাউন্ট থাকবে
    • বেনামে ভলিউমটি চিত্রের বিষয়বস্তু থেকে শুরু করা হবে
  • আপনার কমান্ডটি ধারকটির ভিতরে চলবে
    • আপনি যদি এই RUNকমান্ড চলাকালীন ডিরেক্টরিটি তালিকাভুক্ত করেন তবে আপনি দেখতে পাবেন যে আপনার পরিবর্তনগুলি প্রয়োগ হয়েছে, কিন্তু সেই পরিবর্তনগুলি ভলিউমে প্রয়োগ করা হয়েছে
  • যখন আপনার রান কমান্ডটি সম্পূর্ণ হবে, ডকার পাত্রে পরিবর্তনগুলি ক্যাপচার করবে
    • docker diffআপনি যদি অস্থায়ী পাত্রে মুছে না ফেলেন তবে এই পরিবর্তনগুলি একটির সাথে দেখা যাবে ( --rm=falseসেগুলি থাকার জন্য আপনি একটি বিল্ড চালাতে পারেন )
    • এই পরিবর্তনগুলি বেনামে ভলিউম সামগ্রী অন্তর্ভুক্ত করবে না কারণ অস্থায়ী ধারক ফাইল সিস্টেমের ভিতরে এগুলি বিদ্যমান নেই, খণ্ডগুলি পৃথক

এই আচরণের কারণে আপনার কাছে বিকল্পগুলি রয়েছে:

  1. আপনি আপনার ফাইলগুলি অন্য একটি ডিরেক্টরিতে অনুলিপি করতে পারেন এবং সেখানে অনুমতিগুলি পরিবর্তন করতে পারেন
  2. আপনি আপনার হোস্টের অনুমতিগুলি ঠিক করতে পারেন যাতে সেগুলি সরাসরি সেই অনুমতিগুলির সাথে অনুলিপি করে
  3. আপনি আপনার চিত্র থেকে ভলিউমটি সরিয়ে ফেলতে পারেন, ভলিউম সংজ্ঞাটি সরিয়ে দিতে প্রবাহের চিত্র পেতে পারেন, বা ভলিউম সংজ্ঞা ছাড়াই আপনি নিজের প্রবাহের চিত্রের নিজের অনুলিপিটি পুনর্নির্মাণ করতে পারেন এবং আপনার চিত্রগুলি এটির বাইরে রাখতে পারেন

নোট করুন যে বর্তমান পিএইচপি চিত্রগুলির মধ্যে, এটি প্রদর্শিত হবে যে ভলিউমটি সরানো হয়েছে, যার অর্থ আমাদের কার্যকরভাবে বিকল্প 3 রয়েছে।


0

আমি নিম্নলিখিতটি নিয়ে সবেমাত্র একটি পরীক্ষা করেছি:

FROM alpine

LABEL MAINTAINER="YIMGA YIMGA Salathiel Genèse"
RUN apk add --no-cache inotify-tools
CMD [ "./script.sh" ]
WORKDIR /opt/app/
COPY src/ /opt/app/
RUN chmod a+x *.sh

এবং এটি কেবল দুর্দান্ত কাজ করে।

যাহোক

আমি যখন ডকার-কমপোজ ভলিউমের মাধ্যমে সেই এক্সিকিউটেবল ফাইলটিকে ওভাররাইড করি তখন executeঅনুমতিটি কেবল রোলড-ব্যাকের মতো হয় - প্রযুক্তিগতভাবে মূল ফাইলের অনুমতিতে ওভাররড হয়।

ডেভ মোডের জন্য ফিক্সটি কেবল chmod a+x yourfileহোস্ট থেকে নেওয়া, যা রচনা ভলিউম মাউন্টিংয়ে উত্তরাধিকার সূত্রে প্রাপ্ত হবে।


1
ভলিউমের পুরো লক্ষ্য হ'ল চিত্র ব্যতীত অন্য কোথাও থেকে ফাইলগুলি মাউন্ট করা, সুতরাং আপনি যদি নিজের চিত্রটি ঠিক করেন এবং এর উপরে একটি ভলিউম মাউন্ট করেন তবে ডিজাইনের মাধ্যমে আপনি নিজের চিত্রের পরিবর্তনগুলি দেখতে পাবেন না। কেন আপনার ভলিউম রয়েছে তার উপর নির্ভর করে উত্তরটি কেবল ভলিউম না রাখার হতে পারে।
বিএমইচ

হ্যাঁ বিএমইচ , আমি মাউন্টিং ভলিউমের প্রভাব সম্পর্কে সম্পূর্ণভাবে সম্মতি জানাই যা ডকার নির্মিত চিত্র থেকে কন্টেইনার এফএসকে ওভাররাইড করে, কিন্তু ... বিকাশের সময় আপনি অবশ্যই প্রতিটি পরিবর্তন প্রতিরোধ করার জন্য আপনার ধারকটিকে পুনর্নির্মাণ / পুনঃসূচনা করতে চান না you না। এই পরবর্তী দৃশ্যে আপনি কী এমন একটি ভলিউম মাউন্ট করতে চান যা ডকার নির্মিত চিত্র fs কে ওভাররাইড করে? এবং এখানে নামার আগে আমি একই সমস্যার মুখোমুখি হয়েছিলাম। উত্তর বর্ণনার দ্বারা আমি দোষী সাব্যস্ত হইনি এবং সেগুলির প্রত্যেকটি পরীক্ষা করেছি। তবেই আমি বুঝতে পেরেছিলাম যে এটি কী চলছে এবং আমার পর্যবেক্ষণগুলি পোস্ট করেছে ...
সালাথিয়েল জেনেস

... এবং আমি সন্দেহ করি যে পরিস্থিতিতে আমি যে পরিস্থিতিটি অনুভব করেছি তিনি একই প্রশ্ন জিজ্ঞাসা করেছেন as
সালাথিয়েল জেনেস

ওপি ইঙ্গিত দিয়েছে যে তারা সমস্যাটি কেবল একটি docker runকমান্ডের সাথে দেখে এবং কোনও বাহ্যিক ভলিউম মাউন্ট করে না।
বিএমইচ

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