‫Được
‫rồi, vì vậy những gì tôi sẽ làm là, tôi sẽ đi qua từng dịch vụ dựa trên kiến trúc
‫này và tôi sẽ tạo ứng dụng này một cách nhanh chóng. Tôi thực sự sẽ nhập các lệnh ở đây trong readme, bởi vì đó có vẻ
‫như là một nơi hợp lý để tôi làm điều đó. Và sau đó tôi sẽ cắt và dán chúng vào nút
‫của tôi.
‫Nếu bạn nhớ, tôi có một Swarm 3 nút ở đây. Nếu tôi tạo một nút docker ls, bạn
‫sẽ thấy rằng tôi có ba nút ở đây. Chúng đều là các nút quản lý.
‫Tôi không có vùng chứa nào đang chạy, và không có dịch vụ, rõ ràng. Điều đầu tiên, tôi biết ở trên cùng,
‫nó nói về việc tôi cần mạng và tôi cần một khối lượng.
‫Vì vậy, có lẽ có thể lấy được mạng và tôi có thể bảo vệ điều đó. Tôi có thể gõ
‫mạng docker tạo lớp phủ d. Hãy nhớ rằng mạng lớp phủ là loại mạng duy nhất mà chúng ta có thể
‫sử dụng trong một Swarm vì lớp phủ cho phép chúng ta trải dài qua các nút, như thể tất cả chúng đều nằm trong mạng cục bộ.
‫Và sau đó tôi muốn gọi nó là phụ trợ.
‫Và sau đó, tôi muốn làm điều tương tự, chỉ gọi nó là giao diện người dùng.
‫Bây giờ, không có gì đặc biệt về hai mạng này.
‫Chúng tôi sẽ chỉ phân đoạn các dịch vụ khác nhau của chúng tôi thành một dịch vụ khác để giúp hoạt động giống
‫như một bức tường lửa nhỏ ngăn cách để bảo vệ.
‫Trong lần bỏ phiếu này,
‫tôi biết mình cần tạo một dịch vụ docker và tôi phải đặt tên cho nó, vì vậy tôi cũng có thể đặt tên cho phiếu bầu. Và sau đó tôi phải xuất bản cổng 80 đến 80 trong vùng chứa
‫và nó phải nằm trên một mạng cụ thể. Vì vậy, giao diện người
‫dùng mạng. Tôi cần hai bản sao.
‫Vì vậy, sao chép hai. Và sau đó, tôi cũng có thể chỉ cần sao chép và dán tên này.
‫Bây giờ, tôi sẽ tiếp tục và tạo tất cả những thứ này trước khi thực sự triển khai chúng.
‫Tôi thực sự sẽ sao chép cái này ở đây. Cái này sẽ được gọi là ... nó sẽ không được gọi là phiếu bầu,
‫nó sẽ được gọi là redis.
‫Bạn không phải lo lắng về việc xuất bản bất kỳ cổng nào trên đó.
‫Nó sẽ ở trên mạng frontend.
‫Tôi muốn có hai bản sao, và sau đó, tôi sẽ gọi nó là màu đỏ, ba hai là hình ảnh.
‫Ở đây, dịch vụ docker tạo tên worker, sẽ có trên hai mạng. Tôi phải làm giao diện người dùng mạng
‫và ... rất tiếc.
‫Tôi đang nhập những gì tôi đang nói ... hãy xem, phần phụ trợ mạng, và sau đó chỉ có một bản sao.
‫…
‫Bởi vì một bản sao là mặc
‫định, tôi thực sự không phải chỉ định bản sao và tôi không chỉ định bất kỳ cổng nào.
‫Tôi nghĩ, đó là tất cả những gì tôi cần ở đó. Tôi chỉ cần sao chép hình ảnh.
‫Được rồi, dịch vụ docker tạo tên phụ trợ mạng db.
‫Hãy xem, một bản sao.
‫Ồ, tôi cần phải làm tập này.
‫Đây là điều về khối lượng. Lệnh -v không tương thích với các dịch vụ docker. Bởi vì, vì nhiều lý do khác nhau, các
‫dịch vụ sẽ phức tạp hơn so với việc chạy docker thông thường của bạn.
‫Và có những vấn đề và hạn chế với -v trở lại trong ngày.
‫Vì vậy, Docker đã học hỏi từ đó và cải thiện định dạng. Nhưng nó sẽ dài hơn một chút
‫và có thể khó nhớ hơn một chút khi bắt đầu định dạng.
‫Nó cũng tình cờ chưa được ghi lại đầy đủ trong Docker Documentation vì nó chưa được
‫một năm tuổi dưới dạng lệnh. Vì vậy, chúng tôi sẽ chỉ sao chép và dán nó. Về cơ bản, nếu nó không có
‫ý nghĩa đối với bạn, thì danh sách các giá trị này là một phần của một lệnh mount duy nhất và các giá trị tối
‫thiểu là một loại, một nguồn và một mục tiêu.
‫Ngoài ra còn có những thứ khác mà bạn có thể thêm vào, nhưng đây là ba thứ duy nhất chúng ta cần trong trường hợp này.
‫Và bạn có thể thấy nguồn của tôi chỉ là một tập có tên vì tôi không có bất kỳ dấu gạch chéo nào trong đó.
‫Và nếu chúng ta có dấu gạch chéo, nó sẽ là một mount liên kết và chúng ta sẽ phải chỉ định một
‫loại khác.
‫Vì vậy, ở đây, - số lượng loại âm lượng, dữ liệu db nguồn, đích.
‫Tôi nghĩ điều đó chính xác.
‫Và sau đó bạn có thể chỉ, postgres 9. 4.
‫Và cuối cùng là ứng dụng kết quả.
‫Vì vậy, dịch vụ docker tạo phần phụ trợ mạng kết quả tên.
‫Xuất bản cổng. Chúng tôi sẽ sử dụng 5001 đến cổng 80 trong vùng chứa.
‫Tôi chỉ có thể chạy một trong số chúng. Nhân tiện, lý do duy nhất mà chúng tôi đang chạy một
‫trong số này thực sự là một vấn đề ít được biết đến trên ứng dụng này, là ứng dụng này thực sự đang sử dụng WebSockets và WebSockets là thứ
‫yêu cầu kết nối liên tục.
‫Vì vậy, trong lưới định tuyến, WebSocket vẫn chưa thực sự hoạt động tốt vì nó sẽ tiếp tục chuyển
‫bạn qua lại giữa các vùng chứa và WebSocket đó cần phải ở một vùng chứa cụ thể một cách bền bỉ.
‫Vì vậy, với ứng dụng này, những gì chúng ta thực sự nên có, là một proxy phía trước nhưng nó chưa có trong ứng dụng này nên có thể trong phiên bản
‫mới hơn, họ sẽ cập nhật nó và sửa lỗi để chúng ta có proxy.
‫Bằng cách đó, nó có thể bị thừa
‫và chắc chắn rằng bạn đang đến đúng vùng chứa. Chúng tôi
‫sẽ sao chép và dán nó vào cuối. Tôi chỉ nhận ra rằng tôi đang thiếu giá trị cuối cùng trên những thứ này.
‫Được rồi, tôi sẽ bắt đầu từ đầu, chỉ cần sao chép và dán. Nó đã được tạo ra các mạng.
‫Vâng, điều này cần được sao chép. Hãy để tôi cập nhật điều đó ở đây.
‫Bản sao. Được rồi, chúng ta sẽ tạo redis. Chúng ta bắt đầu.
‫Được rồi, đã tạo ra cái đó. Bây giờ, bạn sẽ nhận thấy, nhân tiện, tôi lấy lại một ID dịch vụ nhưng nó không
‫có nghĩa là dịch vụ thực sự được triển khai chính xác.
‫Chúng tôi sẽ xem xét điều đó trong một phút.
‫Hãy để tôi lấy phần còn lại của những thứ này trong đó.
‫Được rồi.
‫Bây giờ chúng ta đã có điều đó, chúng ta sẽ có thể thực hiện phần còn lại của các lệnh ở đây. Vì vậy, dịch vụ docker sẽ cho chúng ta thấy tất cả
‫năm trong số chúng. Và bạn sẽ nhận thấy rằng số lượng bản sao khớp với nhau.
‫Đó là một dấu hiệu tốt.
‫Điều đó có nghĩa là một trong những đã được tạo thành công.
‫Và nếu tôi muốn tìm hiểu sâu hơn, tôi có thể thực hiện một ps dịch vụ docker trên mỗi cái.
‫Được rồi, cứ như vậy đã chạy được 28 giây.
‫redis đã chạy được một phút. db đang chạy 53 giây. bỏ phiếu.
‫người làm việc.
‫Và bạn sẽ thấy ở đây trong worker, rằng chúng tôi có một tác vụ không thành công bị tắt và sau đó một tác vụ đang chạy.
‫Nó đã chạy trong 47 giây.
‫Được rồi, vì vậy, tôi thực sự biết tại sao điều này lại xảy ra, nhưng bạn có thể không biết, vì vậy có lẽ chúng tôi sẽ phải ghi nhật ký.
‫Bây giờ đây là trên node2.
‫Một tính năng thử nghiệm mà bạn có thể kích hoạt thông qua cấu hình tùy chọn trong Docker, thực sự là
‫thực hiện tính năng thử nghiệm mới, nhật ký dịch vụ docker. Mà thực sự kéo các bản ghi từ nhiều nút khác nhau.
‫Hy vọng rằng nó sẽ được phát hành trong phiên bản Docker tiếp theo vào cuối năm nay.
‫Nhưng hiện tại, đó là thử nghiệm. Vì vậy, tôi phải kích hoạt nó bên trong nhật ký daemon etc docker, hoặc daemon.
‫tệp json. Và bạn biết đấy, đây là cách bạn kích hoạt thử nghiệm.
‫Đó không phải là một phần của việc này.
‫Đó chỉ là điều tôi đã làm, để tôi có thể thể hiện điều này một cách thực sự nhanh chóng.
‫Bạn có thể thấy lỗi này và bạn đang nghĩ, tôi không biết tại sao điều đó lại xảy ra?
‫Chúng ta có thể nhìn vào nhật ký đó. Vì vậy, chúng ta có thể thực hiện một nhân viên ghi nhật ký dịch vụ docker ... ối... công nhân ghi nhật ký.
‫Và cái này, cái cụ thể này, hãy xem, đây là hai cái khác nhau ...
‫Bạn có thể thấy ở đây đây là một, và sau đó số lượng thay đổi. Trên thực tế, vâng.
‫Đây là tất cả một quyền ở đây.
‫Nó cho biết không có thiết bị hoặc địa chỉ như vậy.
‫Vì vậy, về cơ bản điều này có nghĩa là, tôi đã tạo một dịch vụ đang tìm kiếm bản ghi DNS không
‫tồn tại vì tôi chưa tạo dịch vụ khác. Và nó đã làm điều mà nó phải làm
‫trong “Dockerland”, đó là khi nó gặp lỗi như vậy, ứng dụng sẽ bị lỗi vì Docker thực sự có thể khởi động lại và triển khai
‫lại mọi thứ đúng cách cho đến khi ứng dụng không bị lỗi. Và ngay sau khi tôi khởi chạy tất cả các
‫dịch vụ của mình, mọi thứ đã ngừng hoạt động và mọi thứ hiện hoạt động.
‫Và chúng ta có thể biết điều đó bằng cách quay lại và nhìn vào ps worker. Chúng tôi thấy rằng nó đã chạy thành
‫công trong ba phút.
‫Vì vậy, hãy xem xét ứng dụng của chúng tôi.
‫Nếu tôi chỉ cần kéo lên địa chỉ IP, tôi sẽ nhận được những con chó và con mèo. Tôi sẽ bỏ phiếu cho mèo.
‫Và sau đó nếu tôi truy cập cùng một IP đó trên cổng 5001, tôi sẽ thấy ứng dụng kết quả. Đó là ứng dụng.
‫Bây giờ chúng ta biết rằng nó đang hoạt động vì cách duy nhất mà điều này có thể thay đổi là nếu điều này
‫diễn ra liên tục khi nó bị redis bắt kịp và sau đó được xử lý bởi worker, sau đó đưa vào cơ sở dữ liệu.
‫Vì vậy, chúng tôi biết rằng mỗi dịch vụ ứng dụng của chúng tôi có thể nói chuyện với nhau. Và chúng tôi có thể xem nhật ký nếu chúng tôi
‫muốn.
‫Nhưng, đó là bản demo.