Docker-Compose dengan multi servises

103

INI ADALAH CONTOH PERTANYAAN! JANGAN PERNAH MELAKUKANNYA DALAM PRODUKSI. JALANKAN NGINX / PHP / LAYANAN LAIN DI KONTAINER TERPISAH!

Ketika saya memulai docker-compose upkontainer Ubuntu keluar dengan ubuntu exited with code 0.

Saat saya lari docker run -d -ti -p 80:80 -v ~/sph/laravel52:/www/laravel ubuntu, semuanya bekerja dengan baik.

Bagaimana saya bisa meniru perilaku ini menggunakan Docker Compose?

Ini milik saya 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

Dan docker-compose.yml:

version: '2'
services:
  ubuntu:
        build: .
        container_name: ubuntu
        volumes:
            - ~/sph/laravel52:/www/laravel
        ports:
          - "80:80"
Tim Devlet
sumber
Saya mengerti Anda mungkin melakukan ini dengan sengaja ENTRYPOINT nginx && service php5-fpm start && /bin/bash. Tetapi jika Anda tidak memahami implikasi dari keputusan itu, Anda dapat membaca github.com/phusion/baseimage-docker
Daniel Stefaniuk
Nama img. Kesalahan saya. Ubuntu
Tim Devlet

Jawaban:

236

Masalahnya adalah Anda menggunakan opsi -tsaat menjalankan penampung Anda.

Bisakah Anda memeriksa apakah mengaktifkan ttyopsi (lihat referensi ) di file docker-compose.yml Anda, container tetap berjalan?

version: '2'
services:
  ubuntu:
        build: .
        container_name: ubuntu
        volumes:
            - ~/sph/laravel52:/www/laravel
        ports:
          - "80:80"
        tty: true
YesusTinoco
sumber
4
Apakah Anda mendapatkan pesan kesalahan: ERROR: An HTTP request took too long to complete. Retry with --verbose to obtain debug information.setelah Anda menambahkan tty: true?
Winters
1
tty berfungsi karena membuat terminal semu. Saya memiliki masalah serupa dengan kontainer SQL Server 2017. Itu berjalan dengan baik dalam mode standalone tetapi keluar dalam mode docker-compose untuk skenario multi-container. Inilah yang saya lakukan dengan tty untuk memperbaikinya handsonarchitect.com/2018/01/…
Nilesh Gule
@NileshGule terima kasih atas waktu Anda untuk menjelaskan mengapa tty bekerja, namun, saya ingin tahu lebih banyak, jika Anda tidak keberatan. Bagaimana tepatnya membuat terminal semu akan mencegah keluarnya? Terima kasih lagi.
Luis Milanese
3
@LuisMilanese umumnya ketika proses latar depan selesai dalam kontainer buruh pelabuhan, itu mengasumsikan bahwa pekerjaan telah selesai dan membersihkan contoh kontainer. Tetapi hal-hal seperti mesin database dan server web perlu terus berjalan. Dengan membuat terminal semu, kontainer tetap hidup. Anda dapat melihat alur kerja ini dengan menjalankan perintah buruh pelabuhan << nama kontainer >> dengan dan tanpa tty
Nilesh Gule
tty tidak berfungsi untuk saya .. saya menggunakan versi "3" dari docker-compose
Sanjay Salunkhe