[क्रॉस-पोस्ट और https://stackoverflow.com/questions/21933955 से नीचे संपादित किया गया क्योंकि इसे स्टैकओवरफ़्लो के लिए बहुत अधिक सायडसमिन माना जाता था।]
मेरे पास एक डॉक कंटेनर है, जो नगनेक्स को चलाता है, जो दूसरे डॉकटर कंटेनर से लिंक करता है। दूसरे कंटेनर के होस्ट नाम और आईपी पते को नेटगिन कंटेनर में स्टार्टअप पर पर्यावरण चर के रूप में लोड किया गया है, लेकिन तब से पहले नहीं पता है (यह गतिशील है)। मैं चाहता हूं कि मैं nginx.conf
इन मूल्यों का उपयोग करूं - उदाहरण के लिए
upstream gunicorn {
server $APP_HOST_NAME:$APP_HOST_PORT;
}
मैं स्टार्टअप पर Nginx कॉन्फ़िगरेशन में पर्यावरण चर कैसे प्राप्त कर सकता हूं?
EDIT 1
यह पूरी फ़ाइल है, नीचे दिए गए उत्तर के बाद:
env APP_WEB_1_PORT_5000_TCP_ADDR;
# Nginx host configuration for django_app
# Django app is served by Gunicorn, running under port 5000 (via Foreman)
upstream gunicorn {
server $ENV{"APP_WEB_1_PORT_5000_TCP_ADDR"}:5000;
}
server {
listen 80;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location /static/ {
alias /app/static/;
}
location /media/ {
alias /app/media/;
}
location / {
proxy_pass http://gunicorn;
}
}
पुन: लोड कर रहा है nginx तब त्रुटियां:
$ nginx -s reload
nginx: [emerg] unknown directive "env" in /etc/nginx/sites-enabled/default:1
EDIT 2: अधिक जानकारी
वर्तमान पर्यावरण चर
root@87ede56e0b11:/# env | grep APP_WEB_1
APP_WEB_1_NAME=/furious_turing/app_web_1
APP_WEB_1_PORT=tcp://172.17.0.63:5000
APP_WEB_1_PORT_5000_TCP=tcp://172.17.0.63:5000
APP_WEB_1_PORT_5000_TCP_PROTO=tcp
APP_WEB_1_PORT_5000_TCP_PORT=5000
APP_WEB_1_PORT_5000_TCP_ADDR=172.17.0.63
रूट nginx.conf:
root@87ede56e0b11:/# head /etc/nginx/nginx.conf
user www-data;
worker_processes 4;
pid /var/run/nginx.pid;
env APP_WEB_1_PORT_5000_TCP_ADDR;
साइट nginx कॉन्फ़िगरेशन:
root@87ede56e0b11:/# head /etc/nginx/sites-available/default
# Django app is served by Gunicorn, running under port 5000 (via Foreman)
upstream gunicorn {
server $ENV{"APP_WEB_1_PORT_5000_TCP_ADDR"}:5000;
}
server {
listen 80;
पुनः लोड करें nginx कॉन्फ़िगरेशन:
root@87ede56e0b11:/# nginx -s reload
nginx: [emerg] directive "server" is not terminated by ";" in /etc/nginx/sites-enabled/default:3
app_web_1
तो उसे एक नया आईपी पता मिलेगा, इसलिए आपको अपने नगीन कंटेनर को भी पुनः आरंभ करना होगा। डॉकर इसे एक अपडेट के साथ फिर से शुरू करेगा /etc/hosts
ताकि आपको नगीन कॉन्फिग फाइल (एस) को बदलने की जरूरत न पड़े।
server $ENV{"APP_WEB_1_PORT_5000_TCP_ADDR"}:5000;
साथ बदल सकते हैंserver app_web_1:5000;