Docker-Compose ที่มีหลาย servises


103

นี่เป็นคำถามตัวอย่าง! ไม่เคยทำในการผลิต เรียกใช้บริการ NGINX / PHP / อื่น ๆ ในตู้คอนเทนเนอร์แยกกัน!

เมื่อฉันเริ่มdocker-compose upคอนเทนเนอร์ Ubuntu ออกด้วยubuntu exited with code 0ไฟล์.

เมื่อฉันวิ่งdocker run -d -ti -p 80:80 -v ~/sph/laravel52:/www/laravel ubuntuทุกอย่างทำงานได้ดี

ฉันจะจำลองพฤติกรรมนี้โดยใช้ Docker Compose ได้อย่างไร

นี่คือของฉัน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
Daniel Stefaniuk

ชื่อ Img ข้อผิดพลาดของฉัน Ubuntu
Tim Devlet

คำตอบ:


236

สิ่งนี้คือคุณกำลังใช้ตัวเลือก-tเมื่อเรียกใช้คอนเทนเนอร์ของคุณ

คุณช่วยตรวจสอบได้ไหมว่าการเปิดใช้งานttyตัวเลือก (ดูข้อมูลอ้างอิง ) ในไฟล์ docker-compose.yml ของคุณที่คอนเทนเนอร์ยังคงทำงานอยู่

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 Server 2017 มันทำงานได้ดีในโหมดสแตนด์อโลน แต่กำลังออกจากโหมดเขียนเทียบท่าสำหรับสถานการณ์หลายคอนเทนเนอร์ นี่คือสิ่งที่ฉันทำกับ tty เพื่อแก้ไขhandsonarchitect.com/2018/01/…
Nilesh Gule

@NileshGule ขอบคุณที่สละเวลามาอธิบายว่าทำไม tty ถึงใช้งานได้ แต่ฉันอยากจะรู้อีกหน่อยถ้าคุณไม่รังเกียจ การสร้างเทอร์มินัลหลอกจะป้องกันไม่ให้ออกได้อย่างไร? ขอบคุณอีกครั้ง.
Luis Milanese

3
@LuisMilanese โดยทั่วไปเมื่อกระบวนการเบื้องหน้าเสร็จสิ้นภายในคอนเทนเนอร์นักเทียบท่าจะถือว่างานเสร็จสมบูรณ์และทำความสะอาดอินสแตนซ์คอนเทนเนอร์ แต่สิ่งต่างๆเช่นโปรแกรมฐานข้อมูลและเว็บเซิร์ฟเวอร์จำเป็นต้องทำงานต่อไป การสร้างเทอร์มินัลหลอกทำให้คอนเทนเนอร์ยังคงมีชีวิตอยู่ คุณสามารถดูเวิร์กโฟลว์นี้ได้โดยรันคำสั่ง
Nilesh Gule

tty ใช้งานไม่ได้สำหรับฉัน .. ฉันใช้เวอร์ชัน "3" ของนักเทียบท่า
Sanjay Salunkhe
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.