2017-01-19 38 views
9

Obecnie zmagam się z wdrażaniem moich usług i chciałem zapytać, jaki jest właściwy sposób postępowania z wieloma repozytoriami. Repozytoria są niezależne, ale aby uruchomić je w produkcji, wszystko musi zostać uruchomione.Używanie dokera-komponowania z wieloma repozytoriami

Moja konfiguracja:

  • Git Repository Backend:
    • Backend projektu Rails
    • doker-komponować: backend (wystawiać 3000), db i Redis
  • Git Repository Frontend
    • Express.js serwer
    • doker-compose (wystawiać 4200)

Oba mogą być prowadzone niezależnie i testy mogą być wykonywane przez CI

  • Git Repository Nginx Produkcji
    • Potrzebuje połączyć się z dwoma innymi usługami (ta sama sieć dokerów)
    • przekazuje żądania do prawo usługa

już próbowali zawierać dwie usługi jak submodules do repozytorium Nginx i użyć Döcker-Compose z repo nginx, ale nie jestem z niego zadowolony.

Odpowiedz

9

Możesz tworzyć kompilację CI i przesyłać obrazy dla każdej usługi, którą chcesz uruchomić, i mieć środowisko produkcyjne do uruchamiania wszystkich 3 kontenerów.

Następnie swoją produkcję docker-compose.yml będzie wyglądać następująco:

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

    rails: 
    image: yourorg/railsapp 

    express: 
    image: yourorg/expressapp 

Należy zauważyć, że docker-compose nie jest zalecany dla środowisk produkcyjnych; należy szukać przy użyciu Distributed Application Bundles (to wciąż eksperymentalna funkcja, która ukaże się na rdzeniu w wersji 1.13)

Alternatywnie, można zaaranżować swoje pojemniki z narzędzia jak ansible lub skryptu bash; po prostu upewnij się, że tworzysz sieć dokerów i dołączasz do niej wszystkie trzy kontenery, aby mogły się nawzajem odnaleźć.

Edycja: od Docker V17 i Wycofanie DAB s na korzyść Compose file v3, wydaje się, że dla środowisk single-gospodarzach, docker-compose jest poprawnym sposobem uruchamiania aplikacji multi-usługowe. W przypadku scenariuszy z wieloma hostami/HA/klastry możesz zajrzeć do Docker Swarm dla rozwiązania samodzielnie zarządzanego lub Docker Cloud, aby uzyskać więcej opcji PaaS. W każdym razie radzę wypróbować to w Play-with-Docker, oficjalnym internetowym środowisku testowym, w którym można wydzielić wiele hostów i bawić się w klastrze roju bez potrzeby wyrzucania własnych skrzynek.

+0

dziękuję za odpowiedź. Spojrzę się bardziej na narzędzia do orkiestracji kontenerów, takie jak kernernetes czy roje doków. –

+0

Mogę polecić [oficjalne szkolenia Docker] (http://training.play-with-docker.com), aby szybko zrozumieć, jak to zrobić w środowisku piaskownicy, 0-setup. Również z 'docker-compose' v 3+ jest teraz możliwe wdrożenie w klastrze roju za pomocą [' stack stack stosu'] (https://docs.docker.com/engine/reference/commandline/stack_deploy/ # przykłady). Upewnij się, że czytasz dokumenty dotyczące nowej opcji "wdrażania" dla usługi tworzenia wiadomości. – gvilarino