कई सर्विंग्स के साथ डॉकर-कम्पोज़


103

यह एक नमूना सवाल है! उत्पादन में कभी भी ऐसा न करें। एनजीएक्सएक्सएक्स / पीएचपी / सीजनेट कंटेनरों में अन्य सेवाएं!

जब मैं शुरू docker-compose upकरता हूं तो उबंटू कंटेनर बाहर निकल जाता है ubuntu exited with code 0

जब मैं दौड़ता हूं docker run -d -ti -p 80:80 -v ~/sph/laravel52:/www/laravel ubuntu, तो सभी ठीक काम करते हैं।

मैं डॉकर कम्पोज़ का उपयोग करके इस व्यवहार को कैसे दोहरा सकता हूं?

यह मेरा है Dockerfile:

# Version: 0.0.1
FROM ubuntu:15.04



ENV DEBIAN_FRONTEND noninteractive

#INSTALL ALL
RUN apt-get update && apt-get install -y  \
       nano \
       php5-fpm \
       php5-mysql \
       nginx



#NGINX CONF
ADD nginx/sites-available/laravel.conf /etc/nginx/sites-available/
RUN rm /etc/nginx/sites-available/default
RUN mv /etc/nginx/sites-available/laravel.conf /etc/nginx/sites-available/default

VOLUME /www


ENTRYPOINT nginx && service php5-fpm start && /bin/bash

CMD ["true"]


EXPOSE 80

और docker-compose.yml:

version: '2'
services:
  ubuntu:
        build: .
        container_name: ubuntu
        volumes:
            - ~/sph/laravel52:/www/laravel
        ports:
          - "80:80"

मैं समझता हूं कि आप ऐसा कर सकते हैं ENTRYPOINT nginx && service php5-fpm start && /bin/bash। लेकिन अगर आप उस निर्णय के निहितार्थ को नहीं समझते हैं तो आप निम्नलिखित github.com/phusion/baseimage-docker
डैनियल स्टेफानुक

Img नाम। मेरी त्रुटि। उबंटू
टिम देवलेट

जवाबों:


236

बात यह है कि आप -tअपने कंटेनर को चलाते समय विकल्प का उपयोग कर रहे हैं ।

क्या आप जाँच कर सकते हैं कि आपके docker-compose.yml फ़ाइल में ttyविकल्प ( संदर्भ देखें ) सक्षम करते हुए कंटेनर चालू रहता है?

version: '2'
services:
  ubuntu:
        build: .
        container_name: ubuntu
        volumes:
            - ~/sph/laravel52:/www/laravel
        ports:
          - "80:80"
        tty: true

4
क्या आपको एक त्रुटि संदेश मिला: ERROR: An HTTP request took too long to complete. Retry with --verbose to obtain debug information.आपके जोड़े जाने के बाद tty: true?
सर्दियां

1
tty काम करता है क्योंकि यह एक छद्म टर्मिनल बनाता है। मुझे SQL सर्वर 2017 कंटेनर के साथ एक समान समस्या थी। यह स्टैंडअलोन मोड में ठीक चल रहा था लेकिन मल्टी-कंटेनर परिदृश्य के लिए डॉक-कंपोज़ मोड में बाहर निकल रहा था। यहाँ मैंने इसे tson के
नीलेश गुले

@ निलेशगुले धन्यवाद आपके समय के लिए यह समझाने के लिए कि ट्टी क्यों काम करता है, हालांकि, मैं थोड़ा और जानना चाहूंगा, अगर आपको कोई आपत्ति नहीं है। छद्म टर्मिनल बनाने से वास्तव में बाहर निकलने से कैसे रोका जा सकता है? एक बार फिर धन्यवाद।
लुइस मिलानी

3
@LuisMilanese आम तौर पर जब अग्रभूमि प्रक्रिया docker कंटेनर के भीतर पूरी हो जाती है, तो यह मान लिया जाता है कि काम पूरा हो गया है और कंटेनर आवृत्ति को साफ करता है। लेकिन डेटाबेस इंजन और वेब सर्वर जैसी चीजों को जारी रखने की आवश्यकता है। एक छद्म टर्मिनल बनाने से कंटेनर जीवित रहता है। आप डॉक लॉग को चलाकर इस वर्कफ़्लो को देख सकते हैं << कंटेनर का नाम >> कमांड के साथ और बिना tty
नीलेश गुले

tty मेरे लिए काम नहीं कर रहा है .. मैं docker- रचना के संस्करण "3" का उपयोग कर रहा हूँ
संजय सालुंके
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.