में कमांड आउटपुट रीडायरेक्ट करना मैं अपने सर्वर के लिए कुछ सरल लॉगिंग करना चाहता हूं जो एक डॉकर कंटेनर में चल रहा एक छोटा फ्लास्क ऐप है।डॉकर
यहाँ Dockerfile
# Dockerfile
FROM dreen/flask
MAINTAINER dreen
WORKDIR /srv
# Get source
RUN mkdir -p /srv
COPY perfektimprezy.tar.gz /srv/perfektimprezy.tar.gz
RUN tar x -f perfektimprezy.tar.gz
RUN rm perfektimprezy.tar.gz
# Run server
EXPOSE 80
CMD ["python", "index.py", "1>server.log", "2>server.log"]
आप अंतिम पंक्ति मैं एक फाइल करने के लिए stderr और stdout अनुप्रेषित पर देख सकते हैं है। अब मैं इस कंटेनर चलाने के लिए और में यह
docker run -d -p 80:80 perfektimprezy
docker exec -it "... id of container ..." bash
खोल और निरीक्षण निम्नलिखित बातें:
सर्वर चल रहा है और काम
वेबसाइट कोई /srv/server.log
ps aux | grep python
पैदावार है:
root 1 1.6 3.2 54172 16240 ? Ss 13:43 0:00 python index.py 1>server.log 2>server.log
root 12 1.9 3.3 130388 16740 ? Sl 13:43 0:00 /usr/bin/python index.py 1>server.log 2>server.log
root 32 0.0 0.0 8860 388 ? R+ 13:43 0:00 grep --color=auto python
लेकिन वहां ar ई लॉग नहीं ... हालांकि, अगर मैं docker attach
कंटेनर में हूं तो मैं कंसोल में ऐप जेनरेट आउटपुट देख सकता हूं।
डॉकर का उपयोग करते समय मैं फ़ाइल में stdout/err को सही तरीके से रीडायरेक्ट कैसे करूं?
https://github.com/docker/docker/issues/7440 – user2915097
देखें [प्रलेखन] (https: //docs.docker।कॉम/इंजन/संदर्भ/बिल्डर/# शेल-फॉर्म-एंट्रीपॉइंट-उदाहरण) कंटेनर ओएस सिग्नल और 'डॉकर स्टॉप' का सम्मान करने के लिए 'exec' shell अंतर्निहित' का उपयोग करने की अनुशंसा करता है। तो पहला आदेश बन जाता है: 'सीएमडी निष्पादन पायथन index.py> server.log 2> और 1' – lucian