কোনও ডক্টর কনটেইনারে না থেমে Nginx কীভাবে চালানো যায়?


130

আমি এনগিনেক্স একটি ডকার পাত্রে ইনস্টল করেছি এবং এটি এটি চালানোর চেষ্টা করছি:

docker run -i -t -p 80:80 mydockerimage /usr/sbin/nginx

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

কীভাবে আমি ধারকটি থামার হাত থেকে রক্ষা করব? প্রথম শিশু প্রক্রিয়াটির সাথে আবদ্ধ হওয়ার জন্য আমাকে এটি বলতে সক্ষম হতে হবে, বা এনগিনেক্সের প্রারম্ভিক প্রক্রিয়াটি বেরিয়ে যাওয়া থেকে বিরত থাকতে হবে।

উত্তর:


165

nginxসমস্ত ভাল আচরণযুক্ত প্রোগ্রামগুলির মতো, স্ব-ডেমোনাইজ না করার জন্য কনফিগার করা যেতে পারে।

Http://wiki.nginx.org/CoreModule এdaemon off বর্ণিত কনফিগারেশন নির্দেশ ব্যবহার করুন


15
ধন্যবাদ! স্পষ্ট করার জন্য, এর অর্থ সম্পাদনা /etc/nginx/nginx.conf এবং যুক্ত করা "ডিমন বন্ধ;" শীর্ষে (অর্থাত্ সার্ভার বা অন্য নির্দেশকের অভ্যন্তরে নয়)
সেলডো


7
@ লিওনিডশেভসভ ... আপনার অর্থ 1.0.9 এর আগে উত্পাদন ব্যবহারের জন্য অনুমোদিত হয়নি । স্থানে থাকা সাবধানবাণী, ইন-প্লেস আপগ্রেড সম্পর্কে, লোকেরা ডকার ওয়ে করে কিছু করার জন্য কোনও বিষয় নয়।
চার্লস ডাফি

তারা এখন সার্ভার-সাইডে ( nginx.org/en/docs/ngx_core_module.html- এ ) একটি পুনর্নির্দেশ রয়েছে বলে মনে হচ্ছে ।
চার্লস ডাফি

175

চার্লস ডাফির উত্তরে প্রসারিত করতে, এনগিনেক্স daemon offঅগ্রভাগে চালানোর জন্য নির্দেশিকাটি ব্যবহার করে । এটি কনফিগারেশন ফাইলে রাখতে অসুবিধা থাকলে, আমরা এটি সরাসরি কমান্ড লাইনে নির্দিষ্ট করতে পারি। এটি ডিবাগ মোডে (ফোরগ্রাউন্ড) চালানো সহজ করে তোলে এবং কমান্ড লাইন আরোগুলি পরিবর্তন করে সরাসরি প্রোডাকশন মোডে (পটভূমি) চলমান হয়।

অগ্রভাগে চালানো:

nginx -g 'daemon off;'

পটভূমিতে চালাতে:

nginx

3
কেউ "-জি" আসলে কি তা ব্যাখ্যা করতে পারে? এনজিএক্স ব্যবহার করে কেবলমাত্র এটির একটি উদাহরণ আমি ডক্সে এই স্যুইচটিকে পাই না।
red888

5
@ red888, একটি বিশ্বব্যাপী কনফিগারেশন বিকল্প সেট করে।
চার্লস ডাফি 23

1
CMDCMD ["nginx", "-g", "daemon off;"]
ডকারের

55

জন এর জবাব প্রসারিত করতে আপনি Dockerfile CMDনিম্নলিখিত হিসাবে কমান্ডটি ব্যবহার করতে পারেন (আপনি যদি অতিরিক্ত আরগস ছাড়াই এটি শুরু করতে চান)

CMD ["nginx", "-g", "daemon off;"]



6

এখানে আপনার কাছে ডকফাইফাইলের একটি উদাহরণ রয়েছে যা এনজিনেক্স চালায়। চার্লস দ্বারা উল্লিখিত হিসাবে, এটি daemon offকনফিগারেশন ব্যবহার করে :

https://github.com/darron/docker-nginx-php5/blob/master/Dockerfile#L17


2
এবং অফিকাল এনগিনেক্স ডকফিলিলে: github.com/dockerfile/nginx/blob/master/Dockphaile#L15
Ciro Santilli 法轮功 冠状 病 六四 事件

6

টোমর এবং চার্লস উত্তর যুক্ত করতে,

এন্ট্রিপয়েন্ট ব্যবহার করে ডকারের ধারকটিতে ভুগুন্ডে এনগিনেক্স চালানোর সিনট্যাক্স:

ENTRYPOINT nginx -g 'daemon off;' 

সরাসরি সম্পর্কিত নয় তবে এন্ট্রিপয়েন্ট সহ একাধিক কমান্ড চালানোর জন্য:

ENTRYPOINT /bin/bash -x /myscripts/myscript.sh && nginx -g 'daemon off;' 


0

যারা এখানে এসেছেন তাদের জন্য ডকার পাত্রে একটি এনগিনেক্স চিত্র চালানোর চেষ্টা করছেন, এটি পরিষেবা হিসাবে চলবে

কোনও গোটা ডকফাইফাইল নেই বলে এখানে আমার পুরো Dockerfileসমস্যাটি সমাধান করা হচ্ছে।

ভালো লাগছে আর কাজ করছে। চূড়ান্ত nginx ইস্যু সমাধান করার জন্য এখানে সমস্ত উত্তরের জন্য ধন্যবাদ।

FROM ubuntu:18.04
MAINTAINER stackoverfloguy "stackoverfloguy@foo.com"
RUN apt-get update -y
RUN apt-get install net-tools nginx ufw sudo -y
RUN adduser --disabled-password --gecos '' docker
RUN adduser docker sudo
RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
USER docker
RUN sudo ufw default allow incoming
RUN sudo rm /etc/nginx/nginx.conf
RUN sudo rm /etc/nginx/sites-available/default
RUN sudo rm /var/www/html/index.nginx-debian.html
VOLUME /var/log
VOLUME /usr/share/nginx/html
VOLUME /etc/nginx
VOLUME /var/run
COPY conf/nginx.conf /etc/nginx/nginx.conf
COPY content/* /var/www/html/
COPY Dockerfile /var/www/html
COPY start.sh /etc/nginx/start.sh
RUN sudo chmod +x /etc/nginx/start.sh
RUN sudo chmod -R 777 /var/www/html
EXPOSE 80
EXPOSE 443
ENTRYPOINT sudo nginx -c /etc/nginx/nginx.conf -g 'daemon off;'

এবং এটি দিয়ে চালান:

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