2015-05-14 39 views
27

Tôi có một số docker-compose.yml chứa nhiều thùng chứa. Ba trong số đó là dành cho ứng dụng của tôi (máy khách, máy chủ và cơ sở dữ liệu) và phần còn lại dành cho các công cụ dev khác nhau (ví dụ: psql, npm, manage.py, v.v.). Khi tôi làm docker-compose up tất cả chúng được bắt đầu, nhưng tôi chỉ muốn ba cái chính bắt đầu. Bởi vì các liên kết tôi đã chỉ định, tôi có thể bắt đầu chỉ ba liên kết đó với docker-compose up client nhưng sau đó đầu ra chỉ từ một vùng chứa đó. Vì vậy, là có một cách để làm một trong những điều sau đây:docker-compose up chỉ cho các thùng chứa nhất định

  1. biết chính xác Docker-soạn mà container nên bởi bắt đầu bởi docker-compose up
  2. Nhận ra từ tất cả các container liên kết từ docker-compose up client

Trả lời

48

Bạn có thể bắt đầu các thùng chứa bằng cách sử dụng:

$ docker-compose up -d client 

Điều này sẽ chạy các thùng chứa ở hậu cảnh và đầu ra sẽ có sẵn từ

$ docker-compose logs 

và nó sẽ bao gồm tất cả các container bắt đầu của bạn

+3

này nên là câu trả lời được chấp nhận bởi vì nó thực sự trả lời câu hỏi. –

2

Bạn thường không muốn làm điều này. Với Docker Compose, bạn xác định các dịch vụ rằng soạn ứng dụng của bạn. npmmanage.py chỉ là các lệnh quản lý. Bạn không cần một container cho họ. Nếu bạn cần, nói tạo bảng cơ sở dữ liệu của bạn với manage.py, tất cả các bạn phải làm là:

docker-compose run client python manage.py create_db 

Hãy suy nghĩ về nó như là dynos một lần Heroku sử dụng.

Nếu bạn thực sự cần phải đối xử với các lệnh quản lý như container riêng biệt (và cũng có thể sử dụng Docker Soạn cho các), bạn có thể tạo một tập tin riêng biệt .yml và bắt đầu Docker Soạn với lệnh sau đây:

docker-compose up -f my_custom_docker_compose.yml 
+1

_Bạn thường không muốn làm điều này - Vâng, nhưng nó khá tiện dụng nếu bạn muốn điền vào cơ sở dữ liệu trước khi bắt đầu tất cả các dịch vụ khác – msrd0

+1

[Rất nhiều người] (https://github.com/docker/compose/issues/1896) muốn làm điều này. – kojiro

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