2017-01-19 25 views
9

Tôi hiện đang vật lộn với việc triển khai dịch vụ của mình và tôi muốn hỏi, cách thích hợp khi bạn phải xử lý nhiều kho lưu trữ là gì. Các kho là độc lập, nhưng để chạy trong sản xuất, tất cả mọi thứ cần phải được đưa ra.Sử dụng docker-compose với nhiều kho lưu trữ

Cài đặt của tôi:

  • Git Repository Backend: Rails
    • Backend Dự án
    • Docker-soạn: backend (phơi 3000), db và redis
  • Git Repository Frontend
    • Express.js máy chủ
    • Docker-soạn: (phơi 4200)

Cả hai có thể chạy độc lập và thử nghiệm có thể được thực hiện bởi CI

  • Git Repository Nginx cho sản xuất
    • Cần kết nối với hai dịch vụ khác (cùng một mạng docker)
    • chuyển tiếp yêu cầu đến dịch vụ đúng

Tôi đã cố gắng để bao gồm hai dịch vụ như submodules vào kho Nginx và sử dụng Docker-soạn của repo nginx, nhưng tôi không thực sự hạnh phúc với nó.

Trả lời

9

Bạn có thể xây dựng CI và đẩy hình ảnh cho từng dịch vụ mà bạn muốn chạy và có môi trường sản xuất chạy tất cả 3 vùng chứa.

Sau đó, sản xuất của bạn docker-compose.yml sẽ trông như thế này:

lb: 
    image: nginx 
    depends_on: 
    - rails 
    - express 
    ports: 80:80 

    rails: 
    image: yourorg/railsapp 

    express: 
    image: yourorg/expressapp 

Hãy lưu ý rằng docker-compose không được khuyến khích cho các môi trường sản xuất; bạn nên xem xét sử dụng Distributed Application Bundles (đây vẫn là một tính năng thử nghiệm, sẽ được phát hành cho lõi trong phiên bản 1,13)

Ngoài ra, bạn có thể dàn xếp container của bạn với một công cụ như ansible hoặc một kịch bản bash; chỉ cần chắc chắn rằng bạn tạo một mạng docker và đính kèm cả ba container vào nó để họ có thể tìm thấy nhau.

Chỉnh sửa: kể từ Docker v17 và việc ngừng sử dụng DAB s có lợi cho Compose file v3, có vẻ như đối với môi trường máy chủ đơn, docker-compose là cách hợp lệ để chạy các ứng dụng đa dịch vụ. Đối với các kịch bản nhiều máy chủ/HA/cụm, bạn có thể muốn xem xét Docker Swarm cho giải pháp tự quản lý hoặc Docker Cloud để có thêm cách tiếp cận PaaS. Trong mọi trường hợp, tôi khuyên bạn nên thử nó trong Play-with-Docker, hộp cát trực tuyến chính thức, nơi bạn có thể quay ra nhiều máy chủ và chơi xung quanh với một cụm đám mà không cần phải quay ra các hộp của riêng bạn.

+0

cảm ơn câu trả lời của bạn. Tôi sẽ xem xét nhiều hơn vào các công cụ sắp xếp container như kubernetes hoặc bệ đỡ docker. –

+0

Tôi có thể giới thiệu [Đào tạo chính thức của Docker] (http://training.play-with-docker.com) để nhanh chóng hiểu cách thực hiện công cụ này trong môi trường sandboxed, 0 thiết lập. Ngoài ra, với 'docker-compose' v 3+, bây giờ có thể triển khai một cụm swarm với [' docker stack deploy'] (https://docs.docker.com/engine/reference/commandline/stack_deploy/ #examples). Hãy chắc chắn rằng bạn đọc các tài liệu liên quan đến tùy chọn 'deploy' mới cho một dịch vụ soạn thư. – gvilarino

Các vấn đề liên quan