‫Được rồi. Hãy xem thêm một số ví dụ về Dockerfile.
‫Trong kho lưu trữ của chúng tôi mà bạn đã tải xuống từ Github của tôi, hãy đi vào Dockerfile mẫu số 2.
‫Lần này, chúng tôi thực sự có hai tệp.
‫Chúng tôi có Dockerfile. Và bây giờ chúng tôi có một chỉ mục. html.
‫Siêu đơn giản. Chào thế giới. HTML.
‫Việc hiểu HTML không thực sự quan trọng.
‫Chúng tôi sẽ sao chép nó vào hình ảnh vùng chứa của chúng tôi khi chúng tôi đang xây dựng nó.
‫Nếu chúng ta nhìn vào Dockerfile, bạn sẽ thấy trên tệp này rằng chúng ta đang thực sự sử dụng Nginx làm lệnh FROM
‫của mình.
‫Chúng tôi không xây dựng Nginx của riêng mình bởi vì theo lý tưởng, nếu bạn có thể sử dụng hình ảnh chính
‫thức để hoàn thành công việc từ Docker Hub, thì bạn sẽ dễ dàng hơn rất nhiều để duy trì Dockerfile này và giữ cho
‫nó hoạt động tốt.
‫Trong các tình huống đơn giản hơn, thường thì hình ảnh chính thức là công việc. Nhưng khi bạn phát triển và tăng thêm độ phức tạp
‫cho môi trường và hệ thống của mình, có thể bạn sẽ thấy rằng mình cần thêm phần mềm tùy chỉnh
‫bổ sung hoặc thay đổi cách khởi động hoặc thêm các tập lệnh vào để điều chỉnh cấu hình.
‫Nhưng khi tôi bắt đầu một dự án greenfield mới hoặc nếu tôi đang chuyển đổi một số ứng dụng cũ, tôi luôn bắt
‫đầu với những hình ảnh chính thức từ Docker Hub. Sau đó, khi tôi gặp phải một số rào cản và tôi không thể
‫sử dụng hình ảnh đó nữa, tôi có thể quay lại Docker Hub và xem xét một lần nữa và xem liệu có bất kỳ tùy chỉnh
‫nào ngoài đó thực sự phổ biến mà tôi có thể tin tưởng hay không và xem xét và xem nó có giải quyết được vấn đề của tôi không.
‫Nhưng không có gì sai khi xây dựng của riêng bạn.
‫Nó chỉ là công việc nhiều hơn và bảo trì nhiều hơn theo thời gian.
‫Vì vậy, ở đây là siêu đơn giản. Chúng tôi có ba khổ thơ.
‫Bạn đã thấy FROM trước đây. Và lần này chúng ta có WORKDIR.
‫Bây giờ về cơ bản đó chỉ là chạy một thay đổi thư mục không gian cd. Vì vậy, bạn có thể muốn sử dụng lệnh run và chỉ cần nhập run
‫cd vào thư mục này và sau đó thực hiện một số thao tác. Nhưng thực sự cách tốt nhất cho Dockerfiles
‫là luôn sử dụng một đoạn WORKDIR riêng biệt cho bất cứ khi nào bạn thay đổi thư mục.
‫Vì vậy, nếu tệp của bạn hơi phức tạp và bạn phải di chuyển qua lại trong vùng chứa để thực
‫hiện mọi thứ trong khi nó đang xây dựng, bạn luôn muốn sử dụng WORKDIR vì nó dễ dàng hơn rất nhiều để mô tả trong
‫Dockerfile những gì bạn đang làm.
‫Trong trường hợp này, những gì chúng tôi thực sự đang làm ở đây là chúng tôi đang thay đổi thành thư mục Nginx
‫mặc định cho các tệp HTML của nó.
‫Trong cấu hình mặc định trên Docker Hub, Nginx chỉ hoạt động như một máy chủ web và nó chỉ
‫phân phát các tệp tĩnh ngay trên đĩa chứa.
‫Khổ thơ cuối cùng ở đây, chúng tôi có, là bản sao. Và đây là đoạn thơ bạn sẽ luôn sử dụng để
‫sao chép mã nguồn từ máy cục bộ hoặc máy chủ bản dựng của bạn vào hình ảnh vùng chứa của bạn.
‫Trong trường hợp này, chúng tôi chỉ lấy chỉ mục đơn giản của chúng tôi. html và chúng tôi đang ghi đè tệp trong thư mục
‫mặc định của Nginx để đó là trang chủ tùy chỉnh của chúng tôi cho máy chủ web.
‫Trước khi chúng tôi xây dựng điều này, bạn sẽ nhận thấy rằng chúng tôi đang thiếu các khổ thơ bắt buộc, như cmd.
‫Vậy làm thế nào chúng ta có thể thoát khỏi điều đó?
‫Vâng, đã có một cmd được chỉ định trong hình ảnh FROM.
‫Và khi chúng ta sử dụng FROM, chúng ta kế thừa mọi thứ từ Dockerfile mà chúng ta đang 'tạo ra', nếu đó thậm chí là một từ.
‫Đây là cách bạn có thể xâu chuỗi các Dockerfiles với nhau để hình ảnh phụ thuộc vào hình ảnh
‫khác phụ thuộc vào hình ảnh khác.
‫Được rồi. Hãy xem cách này hoạt động như thế nào.
‫Trước khi chúng tôi xây dựng điều này, chúng ta hãy nhanh chóng nhắc nhở bản thân mình về những gì máy chủ Nginx mặc định làm.
‫Hãy thực hiện chạy nhanh vùng chứa docker -p 8080, và chúng ta sẽ không cần điều này quá lâu vì vậy chúng ta sẽ thực hiện một --rm để
‫nó sẽ xóa khi thoát. Chúng tôi không quan tâm đến cái tên. Chúng
‫tôi chỉ chạy Nginx. Nếu chúng tôi chuyển sang trình duyệt của mình và chỉ cần nhập localhost, chúng
‫tôi sẽ thấy trang chỉ mục Nginx mặc định.
‫ĐƯỢC RỒI.
‫Hãy nhớ điều đó, sau đó chúng ta chỉ cần thoát khỏi vùng chứa này và bây giờ chúng ta
‫sẽ xây dựng phiên bản Nginx của chúng ta với tệp mã nguồn bổ sung của chúng ta.
‫ĐƯỢC RỒI.
‫Điều này thực sự sẽ diễn ra rất nhanh chóng.
‫Bạn nhận thấy nó chỉ mất một vài giây. Đó là bởi vì chúng tôi đã có Nginx trong bộ nhớ cache hình ảnh của mình. Và tất cả những gì
‫nó đang chạy là sao chép một tệp rất nhỏ và thay đổi thư mục làm việc.
‫Bây giờ chúng ta hãy chạy lệnh chính xác mà chúng ta vừa chạy cho Nginx. Chỉ lần này, chúng tôi sẽ sử dụng
‫hình ảnh mới mà chúng tôi vừa xây dựng này.
‫Chuyển sang trình duyệt của chúng tôi và làm mới, và tuyệt vời.
‫HTML chỉ mục tùy chỉnh của chúng tôi đang chạy trong đó và vùng chứa của chúng tôi hoạt động.
‫Nếu chúng tôi thực hiện một ls hình ảnh nhanh, chúng tôi có thể thấy hình ảnh mới nhất của chúng tôi ở trên cùng.
‫Nếu chúng tôi thực sự muốn gửi nó đến Docker Hub, nó hoạt động giống như cách chúng tôi đã làm trước đó.
‫Chúng tôi chỉ cần gắn thẻ lại. Vì vậy, chúng tôi có thể làm thẻ hình ảnh docker.
‫Nếu bạn nhớ lệnh trợ giúp, chúng tôi có thể xem định dạng và đó luôn là định dạng
‫chúng tôi đang gắn thẻ và thẻ mà chúng tôi muốn sau đó được gọi. Vì vậy, docker image tag nginx với html mới nhất.
‫Và sau đó tôi sẽ phải gọi nó là bretfisher ... như thế.
‫Sau đó, nếu tôi thực hiện lại ls hình ảnh docker, bạn sẽ thấy hai dòng trên cùng đó lại là cùng một ID hình ảnh và
‫chỉ được gắn thẻ khác nhau.
‫Bây giờ tôi có thể thực hiện việc đẩy docker với kho lưu trữ và thẻ đó và tôi có thể tải nó lên Docker Hub.