‫Bài giảng này sẽ là tất cả về việc thêm xây dựng hình ảnh vào tệp Soạn của bạn để nó tự động đảm
‫bảo rằng bạn có hình ảnh sẵn sàng để sử dụng
‫khi bạn đang chạy các lệnh soạn thảo. Giống như các giảng viên khác trong
‫phần này, bạn thực sự cần hiểu rõ về vùng chứa Docker và chức năng dòng lệnh hình ảnh Docker.
‫Một điều khác mà Compose có thể làm cho bạn là xây dựng hình ảnh của bạn trong thời gian chạy. Nó sẽ thực sự tìm kiếm hình ảnh trong bộ nhớ
‫cache và nếu nó có các tùy chọn xây dựng trong đó, nó sẽ xây dựng hình ảnh đó khi bạn sử dụng lệnh up.
‫Nó sẽ không xây dựng hình ảnh mỗi lần.
‫Nó sẽ chỉ xây dựng nó nếu nó không tìm thấy nó.
‫Bạn sẽ cần phải sử dụng bản dựng soạn thư của docker để xây dựng lại hình ảnh của mình nếu bạn
‫thay đổi chúng hoặc bạn có thể sử dụng bản dựng soạn thư của docker --build.
‫Chúng tôi thực sự sẽ thấy điều đó trong một phút.
‫Điều này thực sự tuyệt vời khi bạn đang sử dụng Soạn cục bộ và bạn có hình ảnh muốn xây dựng. Có thể bạn không muốn sử
‫dụng volume mount. Bạn thực sự muốn sao chép các tệp vào hoặc thứ gì đó vào hình ảnh.
‫Lệnh xây dựng của bạn có thể khá phức tạp. Nó có thể có một số biến môi trường tùy chỉnh hoặc
‫đối số xây dựng.
‫Nhân tiện, xây dựng lập luận, chúng ta chưa nói đến. Đó thực sự chỉ là các biến môi trường chỉ
‫có sẵn trong quá trình xây dựng. Bạn có thể xem các tài liệu. người đóng tàu. com tài liệu về Dockerfiles
‫và nó sẽ nói về việc xây dựng đối số chuyên sâu.
‫Ở đây, chúng ta sẽ xem xét một ví dụ về cách bạn có thể sử dụng nó cục bộ.
‫Tôi đang ở trong thư mục soạn thảo văn bản mẫu 3. Bạn có thể xem tại đây Tôi có một tệp Docker Compose dựng
‫sẵn ở đây.
‫Tôi thực sự có một Dockerfile tên là nginx. Dockerfile. Sau đó, một cấu hình nginx tương tự như
‫những gì chúng tôi đã có trước đó, nơi chúng tôi thực sự sử dụng Nginx làm proxy ngược cho trang web của mình.
‫Nếu chúng ta đi vào Docker Compose, bạn có thể thấy cách tôi đã cấu trúc giải pháp này.
‫Tôi thực sự có hai dịch vụ.
‫Một là proxy Nginx như trước đây, và một là máy chủ web Apache như trước đây.
‫Nhưng có một vài điều khác nhau.
‫Thay vì tôi chỉ định hình ảnh mặc định cho Nginx, tôi thực sự đang xây dựng một hình ảnh tùy chỉnh.
‫Bạn có thể thấy ở đây rằng tôi đã thực sự đưa ra một số đối số mà tôi đang nói với
‫nó rằng Dockerfile nó cần sử dụng là một Dockerfile có tên đặc biệt.
‫Tôi muốn nó xây dựng Dockerfile đó trong thư mục hiện tại chứa nó. Tôi muốn nó đặt tên cho hình ảnh
‫đó khi nó xây dựng
‫nó, nginx -custom. Nó sẽ lưu trữ nó trong bộ nhớ cache cục bộ của tôi. Sau đó, ở dưới cùng, chúng ta có một
‫máy chủ web đang chạy Apache.
‫Những gì tôi đã làm ở đây là tôi đã thực sự gắn một số tệp nguồn HTML mà tôi có vào máy chủ Apache.
‫Vì vậy, kịch bản ở đây có thể là tôi là một nhà
‫phát triển web, tôi có một trang web tĩnh ở đây,
‫bên dưới thư mục HTML này mà tôi thực sự không cần phải lo lắng quá nhiều.
‫Nó chỉ sử dụng một mẫu bootstrap nhỏ.
‫Tôi sẽ chỉnh sửa nội dung đó cục bộ, trong trình chỉnh sửa của tôi ở đây, nhưng tôi biết khi tôi bắt đầu sản
‫xuất với điều này, nó thực sự sẽ nằm sau proxy Nginx.
‫Vì vậy, tôi muốn mô phỏng môi trường sản xuất đó càng nhiều càng tốt, cục bộ, chỉ để đảm bảo rằng tôi đã loại bỏ
‫mọi lỗi hoặc bất kỳ vấn đề nào. Trong trường hợp này, tôi muốn
‫Nginx này và tôi biết rằng cấu hình Nginx này là cấu hình mà họ sẽ sử dụng trên
‫máy chủ sản xuất, vì vậy tôi sẽ sử dụng cấu hình đó ở đây.
‫Đây thực sự là cấu hình Nginx giống như trước đây.
‫Khi tôi chạy lệnh soạn thư của docker, trước tiên tôi sẽ kiểm tra tên của hình
‫ảnh này trong bộ nhớ cache của tôi. Nếu nó không tìm thấy nó, thì nó sẽ sử dụng các lệnh xây dựng này ở đây
‫để tra cứu Dockerfile và sau đó xây dựng hình ảnh của tôi. Bạn có thể thấy từ Dockerfile này, nó thực sự khá đơn giản.
‫Nó sẽ chỉ sử dụng một phiên bản cụ thể của Nginx và sau đó nó sẽ sao chép một tệp vào.
‫Nó sẽ lấy phần còn lại của thông tin từ cấu hình Nginx đó từ Docker Hub và sau đó nó
‫sẽ sao chép trong cấu hình Nginx của tôi.
‫Nếu bạn nhớ trong một ví dụ trước, chúng tôi thực sự đã thực hiện gắn kết liên kết để đưa cấu hình Nginx này vào thông qua
‫tệp soạn thảo của chúng tôi.
‫Trong trường hợp này, chúng tôi chỉ muốn nó xây dựng toàn bộ hình ảnh.
‫Chúng tôi không thực sự cần phải thay đổi cấu hình proxy này, vì vậy tôi không thực sự cần phải gắn kết nó để tôi có
‫thể thay đổi nó mọi lúc.
‫Tôi chỉ muốn nó chạy. Đúng? Vì vậy, tôi sẽ xây dựng nó. Hãy để nó nằm trong bộ nhớ cache hình ảnh. Khi nó được xây dựng
‫lần đầu tiên, nó sẽ không cần phải được xây dựng lại thực sự thường xuyên.
‫Vì vậy, tôi sẽ rời khỏi đó.
‫Sau đó, khi tôi đang chỉnh sửa và phát triển trên trang web của mình, tôi sẽ có cấu hình này để
‫tôi có thể thực hiện các chỉnh sửa trực tiếp. Nếu chúng ta quay lại đây và tôi soạn thảo một docker, chúng ta
‫hãy xem xét những gì đã xảy ra.
‫Đầu tiên nó tạo ra mạng.
‫Đó là một điều bình thường. Nó làm được điều đó.
‫Sau đó, thực sự thấy rằng dịch vụ proxy không có hình ảnh mà nó đang tìm kiếm. Vì vậy, nó sẽ xây dựng
‫điều đó.
‫Vì vậy, nó rút Dockerfile và xây dựng nó giống như nó sẽ thực hiện một lệnh xây dựng docker thông thường.
‫Sau đó, nó cho tôi mẹo hữu ích này để cho tôi biết rằng nó đã xây dựng hình ảnh lần này vì nó không thể
‫tìm thấy nó.
‫Nhưng trong tương lai, nếu tôi cần thay đổi hình ảnh đó, tôi sẽ cần sử dụng trình soạn thảo
‫docker hoặc trình docker soạn các lệnh --build. Bây giờ nó đã có hình ảnh,
‫nó thực sự có thể tạo các vùng chứa. Sau đó, nó khởi động máy chủ web và máy chủ proxy của tôi.
‫Nếu mọi thứ hoạt động chính xác, tôi sẽ có thể có được một localhost. Nó đã kéo lên mẫu mặc định của tôi ở đây,
‫đây thực sự là một mẫu bootstrap.
‫Có vẻ như mọi thứ đều hoạt động.
‫Trên thực tế, tôi đi qua đây và tôi có thể thấy tất cả nhật ký của mình đang hiển thị và rõ ràng là có rất nhiều tài sản. Có một mục nhật ký cho mỗi
‫cái và nó sẽ đi qua proxy và thông qua máy chủ web.
‫Vì tôi đã gắn kết thư mục đó để chỉnh sửa, nên tôi thực sự có thể quay lại trình chỉnh sửa của mình. Là một nhà phát triển web, tôi có thể vào và có thể,
‫bạn biết đấy, chỉnh sửa điều gì đó trên trang web. Có lẽ tôi sẽ đi vào tiêu
‫đề bắt đầu bootstrap, tiêu đề này sẽ là tiêu đề nhỏ ở trên cùng ở đây.
‫Tôi sẽ chỉ lưu tệp đó. Sau đó, nếu tôi làm mới, trang web của tôi sẽ được cập nhật do gắn kết ràng buộc đó một lần nữa.
‫Đây là một ví dụ tuyệt vời về thiết lập nhà phát triển rất phổ biến, nơi bạn cần tạo một số hình ảnh
‫tùy chỉnh cục bộ.
‫Bạn cũng cần gắn một số tệp vào ứng dụng của mình để có thể chỉnh sửa chúng trong thời gian chạy.
‫Và, tất nhiên, nếu đây cần phải là một ứng dụng được cơ sở dữ liệu hỗ trợ, tôi sẽ chỉ thêm một dịch vụ
‫thứ ba ở đây cho máy chủ cơ sở dữ liệu. Sau đó, tôi sẽ quay lại và dọn dẹp.
‫Bạn sẽ nhận thấy rằng, theo mặc định, nó sẽ không thực sự xóa hình ảnh đó.
‫Bạn sẽ nhận thấy ở trên cùng ở đây, chúng tôi có tùy chỉnh nginx mà nó đã xây dựng. Nhưng có một docker soạn lệnh
‫xuống.
‫Nếu bạn xem phần trợ giúp, bạn sẽ thấy rằng có một tùy chọn rmi thực sự loại bỏ các hình ảnh mà nó có thể đã
‫tạo hoặc nó có thể đang sử dụng.
‫Có một tùy chọn thực tế ở đây nói rằng, 'chỉ xóa những hình ảnh không có thẻ tùy chỉnh được đặt bởi trường
‫hình ảnh. 'Một điều
‫tôi có thể làm ở đây nếu tôi muốn làm cho điều này tự động hơn một chút, là tôi có thể lấy lệnh hình
‫ảnh đó ra ngay tại đó. Hãy xóa nó đi. Sau đó, tôi muốn làm sạch thực sự nhanh chóng. Tôi
‫sẽ xóa hình ảnh của mình. hình ảnh docker rm tùy chỉnh. Như bạn có thể thấy, nó đã biến mất ở đó.
‫Được rồi. Tôi muốn soạn lại docker.
‫Và lần này chúng ta sẽ làm a -d.
‫Bạn sẽ nhận thấy trong suốt các ví dụ này của Soạn, rằng nó thực sự đặt tên cho các vùng chứa, khối
‫lượng và mạng với tên của thư mục làm tên dự án.
‫Đó thực sự là một cái gì đó trong Soạn thảo, trong đó, để ngăn xung đột
‫tên, nó thực sự sẽ luôn thêm tên thư mục vào đầu của tất cả các nội dung để chúng không xung đột với các
‫nội dung khác.
‫Bạn thực sự có thể thay đổi tên proxy đó thông qua dòng lệnh.
‫Nếu bạn đi xem tài liệu Soạn thư.
‫Nhưng điểm tôi muốn làm ở đây là nếu tôi tạo một hình ảnh docker ở đây, bạn sẽ thấy rằng nó thực sự đặt tên cho
‫hình ảnh của tôi.
‫Vì vậy, về mặt kỹ thuật tôi không phải sử dụng tùy chọn hình ảnh đó.
‫Nhưng nếu tôi muốn một cái tên cụ thể cho nó để có thể xác định nó sau này, tôi có thể.
‫Lý do tôi đưa ra là điều này thực sự gọn gàng hơn một chút vì những gì tôi có thể làm
‫sau đó là soạn nhạc docker xuống và hãy nhớ trong phần trợ giúp, nó nói rằng tôi có thể sử dụng loại rmi. Vì vậy, khi tôi dọn dẹp nó, và tôi muốn giữ cho
‫môi trường Docker của mình sạch sẽ, tôi có thể làm như vậy ở địa phương.
‫Điều đó sẽ làm thực sự là xóa những hình ảnh đó.
‫Bạn sẽ thấy ở đây ở dưới cùng rằng nó đã xóa hình ảnh.
‫Không phải điều gì đó mà tôi làm mọi lúc nhưng có thể nếu tôi có một dự án lớn với nhiều hình ảnh tùy
‫chỉnh và tôi không muốn nó làm hỏng hệ thống của mình khi tôi không phát triển dự án đó, tôi sẽ
‫sử dụng rmi local và nó sẽ luôn theo dõi các hình ảnh tùy chỉnh mà nó phải tạo.
‫Tất nhiên, ở đây nếu tôi sử dụng tất cả, nó sẽ thực sự xóa mọi hình ảnh được sử dụng trong dự án
‫này mà bạn có thể không muốn làm vì trong trường hợp này, nó có thể xóa máy chủ web httpd Apache và bạn có thể muốn
‫hình ảnh đó ở xung quanh một thời gian. ĐƯỢC RỒI.
‫Bạn đã học được rất nhiều về Soạn trong phần này.
‫Chúng tôi sẽ sử dụng tính năng Soạn thư trong suốt phần còn lại của khóa học này.
‫Chúng tôi sẽ tiếp tục xây dựng những kỹ năng này khi chúng tôi tiếp tục.