2016-08-26 13 views
7

मेरे पास मेरे कंटेनर बनाने के लिए कुछ डॉकरफ़ाइल चलाने वाली डॉकर-कंपोज़ फ़ाइल है। मैं टाइमज़ोन सेट करने के लिए अपने डॉकफाइल को संपादित नहीं करना चाहता क्योंकि वे किसी भी समय मेरी टीम के सदस्यों द्वारा बदल सकते हैं और मेरे पास स्थानीय पर्यावरण परिवर्तन करने के लिए एक डॉकर-compose.override.yml फ़ाइल है। हालांकि, मेरे कंटेनरों में से एक (सेलेनियम आधारित एक) मेजबान समय क्षेत्र खींच नहीं पाता है और इससे मेरे लिए समस्याएं आती हैं। उस पर आधारित मैं अपने सभी कंटेनर पर टाइमज़ोन लागू करना चाहता हूं। मेरे डॉकरफ़ाइल में अभी मैंकंटेनर टाइमज़ोन सेट करने के लिए डॉकर-कंपोज़ का उपयोग

ENV TZ=America/Denver 
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone 

और सब कुछ ठीक काम करता है। मैं डॉकर-कंपोज़ सिंटैक्स में वही कमांड कैसे दोहरा सकता हूं?

+3

https://github.com/dnvriend/docker-timezone-test/blob/master/docker-compose.yml –

उत्तर

7
version "2" 

services: 
    serviceA: 
    ... 
    environment: 
     TZ: "America/Denver" 
    command: > 
     sh -c "ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && 
     echo $TZ > /etc/timezone && 
     exec my-main-application" 

संपादित करें: प्रश्न इसके लिए नहीं पूछा लेकिन मैं सिर्फ दिखाने के लिए कैसे मुख्य प्रक्रिया निर्दिष्ट किया जाएगा exec my-main-application जोड़ दिया है। exec यह सुनिश्चित करने के लिए यहां महत्वपूर्ण है कि my-main-application को Ctrl-C (SIGINT/SIGKILL) प्राप्त होता है।

+0

ध्यान रखें कि डॉकर-कंपोज़ का "कमांड" डिफ़ॉल्ट आदेश को ओवरराइड करता है, यदि कोई हो। संदर्भ: https://docs.docker.com/compose/compose-file/#/command –

+1

@ क्लाउडियोड 'एंजेलिस यह सही है, और यह वांछित व्यवहार भी है। मेरे कोड की त्वरित समीक्षा पर मुझे एहसास हुआ कि मुझे यह निर्दिष्ट करने की आवश्यकता है कि कंटेनर के लिए मुख्य प्रक्रिया कैसे शुरू की गई है। इसे अभी जोड़ना – Alkaline

संबंधित मुद्दे