‫Trong phần này, chúng tôi đã đề cập rất nhiều về Swarm. Swarm, Stacks và Secrets giống như một bộ ba tính năng tuyệt
‫vời thực sự có thể giúp chúng tôi sản xuất mọi thứ dễ dàng hơn nhiều.
‫Tôi muốn cho bạn thấy nó có thể như thế nào nếu bạn thực sự lấy các tệp Soạn của mình, sắp xếp chúng theo
‫một vài cách, và về cơ
‫bản đây là điều tôi gọi là sống trong mơ.
‫Hóa ra bạn thực sự có thể sử dụng một tệp duy nhất để làm nhiều việc, nhưng đôi khi sự
‫phức tạp của bạn tăng lên và bạn sẽ cần nhiều tệp Soạn.
‫Tôi chỉ muốn chạy qua thực sự nhanh chóng.
‫Bạn không thực sự phải tự làm điều này nếu bạn không muốn. Tôi sẽ chỉ cho bạn một ví dụ về
‫cách các tệp Soạn này có thể hoạt động cùng nhau để xây dựng môi trường của bạn khi bạn tiếp tục.
‫Trong trường hợp này, chúng tôi sẽ sử dụng docker soạn cho môi trường phát triển cục bộ của chúng tôi.
‫Chúng tôi sẽ sử dụng một docker để soạn cấu hình và tệp cho môi trường CI của chúng tôi để thực hiện kiểm tra tích hợp.
‫Sau đó, khi chúng tôi đang trong quá trình sản xuất, chúng tôi sẽ sử dụng các tệp đó để triển khai ngăn xếp
‫docker để thực sự triển khai môi trường sản xuất với ngăn xếp. Vì vậy, tôi đang ở trên máy cục bộ của mình và chúng ta sẽ sử
‫dụng ví dụ trước về kịch bản Drupal, với máy chủ cơ sở dữ liệu và giao diện người dùng web.
‫Chúng tôi có Dockerfile mà chúng tôi đã sử dụng trong các bài tập trước của chúng tôi. Chúng tôi đang xây dựng lại cấu hình drupal tùy
‫chỉnh nhưng đơn giản với một mẫu.
‫Sau đó, chúng tôi sẽ có tệp soạn thảo mặc định này.
‫Đây được gọi là
‫ghi đè, những gì chúng tôi sắp làm. Ghi đè là nơi tôi có tệp Docker Compose tiêu chuẩn và
‫nó đặt các giá trị mặc định giống nhau trên tất cả các môi trường của tôi.
‫Sau đó, tôi có tệp ghi đè này theo mặc định, Docker Compose, nếu nó được đặt tên
‫chính xác này, docker compose. ghi đè. yml, nó sẽ tự động đưa nó vào bất cứ khi nào tôi soạn thảo docker.
‫Bạn sẽ thấy rằng trong trường hợp này, chúng tôi giả định là phát triển cục bộ bởi vì chúng tôi thực sự muốn các lệnh nhập bằng tay
‫mà chúng tôi sẽ nhập trở nên dễ dàng nhất tại địa phương.
‫Thông thường trong môi trường CI của bạn, tất cả đều tự động nên chúng tôi không thực sự quan tâm nếu các lệnh
‫đó dài hơn một chút.
‫Nhưng chúng tôi thực sự muốn cục bộ là docker dễ dàng soạn thảo.
‫Điều thú vị là Docker Compose sẽ đọc tệp này tự động và nó sẽ
‫áp dụng điều này lên trên hoặc ghi đè, bất kỳ cài đặt nào trong tệp Docker Compose yml.
‫Và ở đây, hãy lưu
‫ý rằng tôi không có tên hình ảnh, bởi vì nó đã được chỉ định ở đây. Trong tệp ghi đè này, tôi ghi đè bằng
‫cách nói rằng tôi muốn xây dựng hình ảnh cục bộ bằng cách sử dụng Dockerfile trong thư mục hiện tại này.
‫Tôi muốn tạo một cổng trên 8080 để phát triển cục bộ. Và tôi đang thiết lập một số khối lượng, và bạn thậm chí sẽ nhận thấy rằng tôi đã đưa cho bạn một ví
‫dụ ở đây về một liên kết ràng buộc, nơi tôi có thể đang thực hiện một chủ đề tùy chỉnh. Và tôi muốn gắn chủ đề của mình trên máy chủ của
‫tôi vào vùng chứa như chúng ta đã làm trong các phần trước, để tôi có thể thay đổi nó cục bộ và sau
‫đó xem nó ngay lập tức trên máy chủ.
‫Và nhân tiện, với ví dụ này, tôi thực sự không biết cách phát triển các chủ đề trong Drupal.
‫Tôi không chắc chắn chính xác rằng nếu tôi thay đổi tệp trong đó, tệp đó sẽ tự động được phản ánh.
‫Tôi chỉ muốn đưa ra một ví dụ về cách bạn đang phát triển web, thông thường đây là cách bạn sẽ làm
‫mà không cần phải dừng lại và bắt đầu Soạn thư mọi lúc. Dưới đây, dưới postgres, chúng ta có biến môi trường
‫và cài đặt Bí mật như trước đây. Chúng tôi có các khối lượng được xác định và bạn sẽ
‫thấy ở dưới
‫cùng, tôi thực sự có bí mật dựa trên tệp bởi vì khi chúng tôi thực hiện phát triển cục bộ, chúng tôi phải sử dụng
‫bí mật dựa trên tệp.
‫Mọi thứ trở nên thú vị một chút khi tôi nhìn vào sản phẩm này, hoặc các tệp thử nghiệm. Cách này sẽ hoạt động
‫là, hãy nhớ rằng. ghi đè. yml tự động được chọn bởi dòng
‫lệnh Docker Compose. Trong sản phẩm hoặc thử
‫nghiệm, tôi sẽ phải chỉ định chúng theo cách thủ công.
‫Vì vậy, để kiểm tra, chúng ta sẽ phải sử dụng lệnh -f.
‫Nếu bạn nhớ từ các phần trước, -f là khi chúng tôi thực hiện soạn nhạc docker mà chúng tôi muốn chỉ định
‫một tệp tùy chỉnh. Tôi sẽ cho bạn thấy điều đó trong một phút.
‫Sau đó, trong sản xuất, vì chúng ta sẽ không thực sự có dòng lệnh Docker Compose trên máy chủ sản
‫xuất, những gì chúng ta sẽ làm ở đây là chúng ta thực sự sẽ sử dụng lệnh cấu hình soạn thảo docker.
‫Lệnh config thực sự sẽ thực hiện một đầu ra bằng cách kết hợp với nhau hoặc kết hợp đầu ra của
‫nhiều tệp cấu hình.
‫Vì vậy, điều đó sẽ thực sự tuyệt vời.
‫Thực sự nhanh chóng, tệp thử nghiệm chỉ có drupal và các postgres.
‫Hãy tưởng tượng nếu đây là giải pháp Jenkins CI hoặc Codeship CI của bạn, nơi tôi muốn nó xây dựng hình ảnh mỗi
‫khi tôi cam kết mã của mình và tôi muốn gọi nó là cái này, và tôi muốn nó ở trên
‫cổng này cho mục đích thử nghiệm. Sau đó, tôi sẽ sử dụng một mật khẩu giả. Nhưng tôi không cần xác định bất kỳ khối lượng nào
‫vì tôi sẽ không thực sự cố gắng giữ dữ liệu khối lượng đã đặt tên vì một lần nữa, nó chỉ là một nền tảng CI.
‫Ngay sau khi nó vượt qua các bài kiểm tra hoặc các bài kiểm tra không thành công, nó sẽ loại bỏ mọi thứ.
‫Sau đó, trong trường hợp này, bạn có thể thấy rằng tôi đã thực sự có kịch bản dữ liệu mẫu này mà
‫có thể trong giải pháp CI của bạn, bạn chỉ có cơ sở dữ liệu ở đó đến từ kho lưu trữ Git tùy chỉnh
‫hoặc có thể chúng là bản tải xuống FTP. Hoặc có điều gì đó xảy ra trong quá trình khởi tạo
‫CI của bạn, nơi nó thực sự tải xuống tệp cơ sở dữ liệu. Và thay vì chúng tôi phải tạo cơ sở dữ liệu của mình mỗi
‫lần chúng tôi thực hiện kiểm tra CI, chúng tôi sẽ chỉ gắn thư mục dữ liệu mẫu này vào nơi dữ liệu postgres của chúng tôi được
‫cho là.
‫Và bằng cách đó, chúng tôi có thể đảm bảo rằng chúng tôi có cùng một dữ liệu mẫu mỗi lần chúng tôi thực hiện kiểm tra CI.
‫Tôi sẽ không đi sâu vào vấn đề đó nữa. Tôi chỉ muốn chứng minh rằng đó có thể là
‫cách tệp này dành cho CI sẽ khác.
‫Sau đó, trong sản xuất, chúng tôi có tất cả các mối quan tâm sản xuất bình thường của chúng tôi. Chúng tôi đang chỉ định khối lượng cho dữ
‫liệu cụ thể của chúng tôi. Chúng tôi đang xác định bí mật của mình. Và để ý ở phía dưới, chúng ta có bí mật bên ngoài.
‫Bởi vì chúng ta sẽ đưa bí mật vào thông qua dòng lệnh như chúng ta đã làm trong
‫nhiệm vụ trước đó.
‫Vấn đề ở đây là cả ba cấu hình này khác nhau theo một cách nào đó, nhưng
‫chúng đều liên quan đến cấu hình lõi, hoặc cấu hình cơ sở, chỉ định nghĩa hai dịch vụ và hình ảnh của chúng.
‫Bạn có thể xem tại đây. Đây là một lời nhắc nhở về những gì nó trông như thế nào.
‫Hãy thoát khỏi phần này và chạy một vài lệnh.
‫Nếu tôi nhìn vào thư mục này, bạn sẽ thấy rằng tôi có tệp cơ sở và sau đó là ba tệp ghi đè.
‫Một lần nữa, hãy nhớ rằng, ghi đè. yml là mặc định.
‫Nếu tôi thực hiện việc soạn thảo một docker, những gì nó thực sự sẽ làm ở đây là sử dụng docker-soạn. yml đầu tiên, và sau đó nó sẽ
‫ghi đè lên. yml một trên đầu trang. Tôi muốn thêm -d vào để
‫chúng ta có thể xem nhanh sau khi nó bắt đầu. Tôi sẽ kiểm tra docker trên hình ảnh drupal.
‫Và những gì tôi muốn cho bạn thấy là ở đây, nó có tất cả các thú cưỡi được liệt kê.
‫Vì vậy, chúng tôi biết rằng nó đã lấy tệp ghi đè vì tệp ghi đè là nơi chúng tôi xác định tất cả các
‫gắn kết này.
‫Vì vậy, chúng tôi biết rằng nó đã nhặt được điều đó.
‫Rõ ràng, nếu nó không chọn cái cơ sở, nó thậm chí sẽ không biết những hình ảnh nào để sử
‫dụng, vì vậy nó thực sự sẽ phàn nàn với chúng tôi và nói rằng tệp Soạn không đầy đủ.
‫Cái đó đã hoạt động.
‫Hãy thực hiện một xuống thực sự nhanh chóng.
‫Nếu chúng tôi thực sự thực hiện lệnh mà chúng tôi cần cho giải pháp CI của mình, những gì chúng tôi sẽ
‫phải làm trên giải pháp CI của mình là đảm bảo rằng Docker Compose đã ở đó và được cài đặt, và có sẵn để chúng
‫tôi có thể thực hiện các lệnh soạn docker. Sau đó, chúng ta có thể chỉ định
‫-f, và sau đó thứ tự của f là tệp cơ sở luôn cần phải ở đầu tiên.
‫Do đó, docker soạn yml, sau đó thử nghiệm soạn docker.
‫Nếu chúng tôi đã làm điều này với một tăng ở cuối và -d, và sau đó tôi đi và kiểm tra cùng một drupal đó, bạn sẽ
‫nhận thấy rằng không có gắn kết ràng buộc.
‫Chúng hoàn toàn bị thiếu vì trong tệp thử nghiệm, chúng tôi không chỉ định chúng.
‫Chúng tôi thực sự không cần Drupal để lưu thông tin vì nó sẽ bị vứt bỏ khi kết
‫thúc lần chạy CI của chúng tôi.
‫Và thứ ba, chúng tôi có cấu hình sản xuất.
‫Cấu hình sản xuất sẽ khác một chút.
‫Tôi sẽ nhấn Mũi tên lên, và sau đó ở đây tôi sẽ thực hiện động tác này. Thay vì một lệnh up, những gì
‫tôi muốn làm ở đây là một cấu hình.
‫Nếu bạn chỉ nhìn vào trợ giúp thực sự nhanh chóng cho cấu hình, nó chỉ có hai tùy chọn và không một trong hai
‫tùy chọn thực sự phù hợp trong tình huống này.
‫Những gì chúng tôi muốn làm chỉ là chạy cấu hình của chính nó. Những gì nó sẽ thực sự làm là xem
‫xét cả hai tệp và đẩy chúng lại với nhau thành một tệp Soạn duy nhất tương đương.
‫Vì vậy, những gì chúng tôi có thể làm ở đây là chỉ cần chạy lệnh này ở đâu đó trong giải pháp CI của chúng tôi. Sau đó, hãy xuất nó ra một
‫tệp, có thể bạn biết, một cái gì đó tương tự như vậy. Tệp đầu ra đó sẽ là tệp chúng tôi sẽ sử dụng chính
‫thức trong quá trình sản xuất để tạo hoặc cập nhật ngăn xếp của chúng tôi.
‫Tuy nhiên, tôi muốn lưu ý một chút ở đây.
‫Đây là tất cả những thứ tương đối mới.
‫Chúng tôi biết rằng Secrets và Swarm Stacks tương đối mới.
‫Chúng chỉ mới được vài tháng tuổi.
‫Kể từ bản ghi âm này.
‫Vì vậy, có một vài cạnh thô.
‫Chúng tôi vừa chạy lệnh cấu hình đó và bạn sẽ thực sự nhận thấy rằng các bí mật không được liệt kê trong đó.
‫Đó là một lỗi hiện tại.
‫Tôi thực sự đang làm việc với nhóm Docker để xem liệu chúng tôi có thể xử lý lỗi đó hay không.
‫Vì vậy, vào thời điểm bạn đọc điều này, nó có thể đã được sửa.
‫Đảm bảo rằng bạn kiểm tra đầu ra của dòng cấu hình trước khi bạn triển
‫khai trong sản xuất.
‫Thứ hai, tùy chọn Phần mở rộng Soạn, mà tôi không thảo luận ở đây, là một cách khác để ghi đè các tệp
‫Soạn này mà bạn thực sự sử dụng tệp ghi đè và bạn thực sự xác định một phần mở rộng trong
‫đó.
‫Nó mang tính khai báo nhiều hơn một chút, vì vậy nó dễ hiểu hơn. Tôi sẽ cung cấp một liên kết trong
‫tài liệu tham khảo cho phần này. Chỉ cần biết rằng tùy chọn Mở rộng đó chưa hoạt động trong ngăn xếp Swarms.
‫Tôi không đề cập đến nó ở đây vì nó không thực sự cung cấp cho bạn vòng đời ứng dụng đầy đủ mà chúng tôi
‫mong đợi, nhưng tôi hy vọng họ sẽ làm được điều gì đó ở một thời điểm nào đó.
‫Giống như thêm nó vào Swarm hoặc tạo một quy trình làm việc tốt hơn. Bởi vì đó thực sự là ý tưởng mà chúng tôi
‫đang cố gắng đạt được với tất cả các công cụ này, là có một vòng đời hoàn chỉnh và dễ dàng từ quá trình phát
‫triển thông qua thử nghiệm, đến sản xuất, với cùng một bộ cấu hình, trong cùng một bộ hình ảnh .
‫Tôi hy vọng điều này khiến bạn suy nghĩ về cách bạn có thể tạo ứng dụng của mình theo cách này và cách bạn
‫có thể mở rộng tệp Soạn của riêng mình cho các tình huống phức tạp.
‫Bởi vì không có gì mang lại nụ cười trên khuôn mặt của tôi nhanh hơn với Docker hơn khi tôi thấy ai đó chạy một lệnh
‫một dòng để làm điều gì đó mà trước đây cần nhiều tập lệnh để thực thi.