Docker-Compose với nhiều dịch vụ


103

ĐÂY LÀ CÂU HỎI MẪU! KHÔNG BAO GIỜ LÀM ĐƯỢC TRONG SẢN XUẤT. CHẠY NGINX / PHP / CÁC DỊCH VỤ KHÁC TRONG CÁC CONTAINER RIÊNG!

Khi tôi khởi động docker-compose upvùng chứa Ubuntu thoát với ubuntu exited with code 0.

Khi tôi chạy docker run -d -ti -p 80:80 -v ~/sph/laravel52:/www/laravel ubuntu, tất cả đều hoạt động tốt.

Làm cách nào để tái tạo hành vi này bằng Docker Compose?

Đây là của tôi 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"

Tôi hiểu bạn có thể làm điều này có mục đích ENTRYPOINT nginx && service php5-fpm start && /bin/bash. Nhưng nếu bạn không hiểu ý nghĩa của quyết định đó, bạn có thể đọc github.com/phusion/baseimage-docker
Daniel Stefaniuk

Tên tôi. Lỗi của tôi. Ubuntu
Tim Devlet

Câu trả lời:


236

Vấn đề là bạn đang sử dụng tùy chọn -tkhi chạy vùng chứa của mình.

Bạn có thể kiểm tra xem kích hoạt ttytùy chọn (xem tài liệu tham khảo ) trong tệp docker-compos.yml của mình, vùng chứa có tiếp tục chạy không?

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

4
Bạn có nhận được thông báo lỗi: ERROR: An HTTP request took too long to complete. Retry with --verbose to obtain debug information.sau khi bạn thêm tty: truekhông?
Mùa đông

1
tty hoạt động vì nó tạo ra một thiết bị đầu cuối giả. Tôi đã gặp sự cố tương tự với vùng chứa SQL Server 2017. Nó hoạt động tốt ở chế độ độc lập nhưng đang thoát ra ở chế độ soạn thư của docker cho kịch bản nhiều vùng chứa. Dưới đây là những gì tôi đã làm với tty để sửa chữa nó handsonarchitect.com/2018/01/...
Nilesh Gule

@NileshGule cảm ơn bạn đã dành thời gian giải thích lý do tại sao tty hoạt động, tuy nhiên, tôi muốn biết thêm một chút nếu bạn không phiền. Làm thế nào chính xác việc tạo một thiết bị đầu cuối giả sẽ ngăn việc thoát? Cảm ơn một lần nữa.
Luis Milanese

3
@LuisMilanese nói chung khi quá trình nền trước hoàn tất trong vùng chứa docker, nó sẽ giả định rằng công việc đã hoàn thành và dọn dẹp cá thể vùng chứa. Nhưng những thứ như công cụ Cơ sở dữ liệu và máy chủ web cần tiếp tục chạy. Bằng cách tạo một thiết bị đầu cuối giả, vùng chứa vẫn tồn tại. Bạn có thể xem quy trình làm việc này bằng cách chạy lệnh docker log << container name >> có và không có tty
Nilesh Gule

tty không hoạt động cho tôi .. tôi đang sử dụng phiên bản "3" của Docker-soạn
Sanjay Salunkhe
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.