Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 112 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
112
Dung lượng
3,51 MB
Nội dung
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN BÁO CÁO ĐỒ ÁN TÌM HIỂU DOCKER VÀ XÂY DỰNG ỨNG DỤNG MINH HỌA Giảng viên hướng dẫn: ThS Nguyễn Công Hoan Sinh viên thực hiện: Nguyễn Thanh Hưng 19521574 Phạm Nguyễn Minh Thắng 19522216 Thành phố Hồ Chí Minh, 26 tháng 12 năm 2022 ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN BÁO CÁO ĐỒ ÁN TÌM HIỂU DOCKER VÀ XÂY DỰNG ỨNG DỤNG MINH HỌA Giảng viên hướng dẫn: ThS Nguyễn Công Hoan Sinh viên thực hiện: Nguyễn Thanh Hưng 19521574 Phạm Nguyễn Minh Thắng 19522216 Thành phố Hồ Chí Minh, 26 tháng 12 năm 2022 LỜI CẢM ƠN Đầu tiên, nhóm xin gửi lời cảm ơn chân thành đến tập thể quý Thầy Cô Trường Đại học Công nghệ thông tin – Đại học Quốc gia TP.HCM quý Thầy Cô khoa Công nghệ phần mềm giúp cho em có kiến thức làm tảng để thực đề tài Đặc biệt, em xin gửi lời cảm ơn lòng biết ơn sâu sắc tới thầy Nguyễn Công Hoan (Giảng viên khoa Công Nghệ Phần Mềm) Thầy trực tiếp hướng dẫn tận tình, sửa chữa đóng góp nhiều ý kiến quý báu giúp em hoàn thành tốt báo cáo mơn học Trong thời gian học đề tài, em vận dụng kiến thức tảng tích lũy đồng thời kết hợp với việc học hỏi nghiên cứu kiến thức Từ đó, em vận dụng tối đa thu thập để hoàn thành báo cáo đồ án tốt Tuy nhiên, trình thực hiện, em khơng tránh khỏi thiếu sót Chính vậy, em mong nhận góp ý từ phía Thầy nhằm hồn thiện kiến thức mà em học tập hành trang để em thực tiếp đề tài khác tương lai Xin chân thành cảm ơn q Thầy Cơ! Nhóm sinh viên thực ĐỀ CƯƠNG CHI TIẾT TÊN ĐỀ TÀI: TÌM HIỂU DOCKER VÀ XÂY DỰNG ỨNG DỤNG MINH HỌA Cán hướng dẫn: ThS Nguyễn Công Hoan Thời gian thực hiện: Từ ngày: 19/09/2022 đến ngày: 26/12/2022 Sinh viên thực hiện: Nguyễn Thanh Hưng – 19521574 Phạm Nguyễn Minh Thắng – 19522216 Nội dung đề tài: Giới thiệu đề tài: Ngày ứng dụng ngày phát triển mở rộng cách nhanh chóng, việc sử dụng máy ảo (VMs) trở thành tiêu chuẩn để chạy ứng dụng nhanh chóng máy chủ vật l, VM cung cấp khả tuyệt với việc phân chia cô lập thành phần tài nguyên phần cứng cho ứng dụng, nhiên chí phí cho việc tính tốn để lập ảo hóa tài ngun phần cứng lớn ví ứng dụng phải có hệ điều hành (OS) không gian lưu trữ riêng Tuy nhiên năm trở lại đây, ứng dụng chạy container dần trở thành xu hướng Container có cách tiếp cận khác, thay ảo hóa phần cứng container ảo hóa OS (thường Windows Linux) container bao gồm thân phần mềm thư viện phụ thuộc Bằng tận dụng chế cấp thấp OS, container cung cấp cô lập máy áo Trong bối cảnh tổ chức, doanh nghiệp ngày chuộn sử dụng dịch vụ điện toán đám mây, container cung cấp mức độ linh hoạt khả di động hoàn hảo cho việc triển khai vận hành ứng dụng Docker phần mềm mã nguồn mở phổ biến cung cấp công cụ cần thiết để quản lý chạy container Mục tiêu đề tài: - Nắm bắt hiểu Docker ứng dụng - Tìm hiểu kiến trúc, thành phân Docker - Xây dựng, giải toán thực tế Docker Phạm vi đề tài: Đối tượng sử dụng: - Những người cần thường xuyên cài đặt môi trường để phát triển phần mềm, phát triển ứng dụng microservices - Có định hướng phát triển theo hướng DevOps Phương pháp thực hiện: - Tìm hiểu Virtualization, Containerization Docker - Tìm hiểu kiến trúc thành phần Docker - Tiến hành cài đặt sử dụng Docker (Docker Desktop) - Xây dựng ứng dụng thực tế áp dụng Docker Công nghệ sử dụng: - Docker, ASP.Net Core, VueJs, AWS Kết mong đợi: - Nắm bắt áp dụng công nghệ Docker - Hiểu rõ cách vận dụng Docker toán thực tế Kế hoạch thực hiện: Phân công công việc: Công việc Công việc chung Mơ tả cơng việc - Tìm hiểu Docker - Tìm hiểu cơng nghệ - Phân tích, xác định, chức yêu cầu - Kiểm thử - Chuẩn bị tài liệu, viết báo cáo - Xây dựng website bán đồ lưu niệm Nguyễn Thanh Hưng Công việc cá nhân Phạm Nguyễn Minh Thắng - Kiến trúc thành phần - Tìm hiểu Docker compose Docker - - Lập trình Backend, xây - Lập trình Frontend, xây dựng dựng RESTful API giao diện admin - Thiết kế sở liệu Docker storage management TP HCM, ngày 26 tháng 12 năm 2022 Xác nhận CBHD Sinh viên (Ký tên ghi rõ họ tên) (Ký tên ghi rõ họ tên) ThS Nguyễn Công Hoan Phạm Nguyễn Minh Thắng | Nguyễn Thanh Hưng MỤC LỤC LỜI CẢM ƠN ĐỀ CƯƠNG CHI TIẾT .4 MỤC LỤC DANH MỤC HÌNH ẢNH 13 Chương TỔNG QUAN VỀ DOCKER 14 1.1 Hoàn cảnh đời 14 1.1.1 Mơ hình máy chủ 14 1.1.2 Virtualization 15 1.1.3 Containerization .16 1.1.4 Lịch sử container 17 1.1.5 So sánh Virtualization Containerization 18 Chương PHẦN MỀM MÃ NGUỒN MỞ DOCKER 21 2.1 Docker gì? 21 2.2 Lịch sử hình thành Docker 22 2.3 Kiến trúc Docker 23 2.3.1 Docker engine 24 2.3.2 Docker registry .24 2.3.3 Docker objects 26 Docker image 26 Docker container 32 2.4 Docker networking .35 2.4.1 Container networking .36 2.4.2 Docker Drivers .37 Bridge .38 User-defined bridge network (custom network) 39 Host 39 None .40 Overlay 41 2.4.3 Embedded DNS 42 2.5 Docker Data Storage .43 2.5.1 Volumns 44 2.5.2 Bind mounts 45 2.5.3 tmpfs .46 2.6 Dockerfile .47 2.6.1 Format 47 2.6.2 Enviroment .47 2.6.3 Instructions .48 FROM 48 ENV 48 LABEL 49 MAINTAINER 49 USER 49 ADD .50 COPY .50 RUN .50 CMD .51 ENTRYPOINT .52 EXPOSE 52 ARG .52 WORKDIR .53 VOLUME .54 2.6.4 Shell form Exec form 54 Shell form .54 Exec form .55 CMD ENTRYPOINT 56 2.6.5 2.7 Dockerignore file (.dockerignore) 57 Docker build 57 2.7.1 Build context 57 2.7.2 Multi-stage build 57 10 Server dùng NET Core 5.0, Net framework Microsoft phát triển Ở kiến trúc dụng cho server CleanArchitec đễ giảm phụ thuộc dễ dàng mở rộng thêm vào Microsoft hỗ trợ base image cho phiên NET Docker Hub CSDL lựa chọn để lưu trữ MongoDB, hệ CSDL NoSql Đối với dự án e-commerce việc sử dụng NoSql tốt so với Sql tính ràng buộc khơng cao dễ dàng thay đổi cho việc mở rộng sau Hình 5-1 Kiến trúc hệ thống 98 5.4 Sơ đồ Use Case tổng quát Hình 5-2 Sơ đồ Use Case tổng quát 5.5 Build image 5.5.1 Build image cho NET Core API server: Source code: GiftShop Server Github Lướt qua Dockerfile NET file docker-compose 99 o Ở ta tận dụng chế multi-stage build image gồm stage ▪ Base stage dùng để mount data cho image ▪ Build stage tiến restore dependencies cho solution ▪ Publish stage truy cập vào entry API.dll để publish API Đứng thư mục solution chạy docker-compose -f docker-compose.yml build để build service khai báo file yaml, image giftshop-api: tạo thành công 100 Để đồng với image khác môi trường máy local ta đánh tag dev cho image push lên Docker Hub 101 5.5.2 Build image cho trang SPA Tương tự project NET Core ta tiến hành build image cho project VueJS (Client) ReactJS (Admin) Tồn source code tìm thấy GiftShop Github Có tí khác biệt Dockerfile React VueJS sử dụng ARG build_env để sử dụng file biến môi trường, với JS build biến mơi trường inject vào thư mục build compile-time đọc từ run-time 102 5.6 Lauch ứng dụng Docker compose Chuẩn bị project deploy, source code: Deployt Giftshop Github Vì image ứng dụng đẩy lên Hub source code không nằm chung repository nên ta tạo folder độc lập o Thư mục certs chưa chứng x509 để bật chế độ HTTPS cho API o Thư mục env chứa config mơi trường cho API, ta tìm hiểu sau o File docker-compose.dev.override.yaml ghi đè lại giá trị có docker-compose.yaml Ở file docker-compose.yaml ta khai báo đầy đủ service cần chạy 103 Riêng với service giftshop-api ta có định file env Đây nội dung file env 104 o File env Docker tương tự nodejs file văn chứa cặp key-value, giá trị ghi đè vào appsetting.json NET Core o Về mức độ ưu tiên biến mơi trường, ta có thứ tự ▪ File env ▪ Biến môi trường shell ▪ Biến môi trường OS ▪ Dockerfile ▪ Các file appsetting framework Ta chạy lệnh docker-compose -f docker-compose.yaml -f docker- compose.dev.override up -d để chạy tất service, ta khơng cần build tất image lấy từ Hub Ta 13s để khởi chạy tất serviec, hiệu suất cao so với cách triển khai thông thường dùng VMs, nhiên đòi hỏi bạn phải rõ hệ thống làm, cách hoạt động Docker để viết Dockerfile xác hiệu 105 5.7 Demo Ta truy cập vào trình duyệt http://localhost/trang-chu để vào trang web Ta thử đăng ký tài khoản, email: hung2@gmail.com, mật khẩu: 123456 106 Sẽ có email hệ thống gửi để xác nhận email, đâu project sử dụng AWS SES để gửi mail, nhiên cịn mơi trường Sandbox chưa đăng ký môi Production nên dựng máy chủ mail ảo 107 Thử chỉnh sửa thông tin profile 108 109 Trang Admin hoạt động ngon lành 5.8 Tổng hợp Như với thư mục nhỏ, khoảng file ta triển khai hệ thống bao gồm ứng dụng, database dependency khác Project deploy giúp dễ dàng bảo trì, xử lí cố dễ dàng chia cho người khác 110 Chương KẾT LUẬN 6.1 Kết đạt Qua q trình tìm hiểu Docker cơng nghệ liên quan đến Docker, nhóm chúng em hiểu công nghệ biết cách áp dụng công nghệ vào đồ án Docker giải nhiều vấn đề dự án cần nhiều phụ thuộc thư viện, môi trường cài đặt Các kiến thức Docker giúp chúng em áp dụng vấn đề việc xây dựng ứng dụng thực tế dự án thực tập Bên cạnh nhóm chúng em tìm hiểu xây dựng ứng dụng minh họa sử dụng Vue giao diện người dùng ASP.NET làm server cho ứng dụng 6.2 Ưu, nhược điểm Ưu điểm: • Trong q trình tìm hiểu nhóm tiếp thu vận dụng tính Docker việc triển khai ứng dụng minh họa • Xây dựng timeline làm việc gần đảm bảo tiến độ công việc • Các thành viên tích cực đóng góp q trình nghiên cứu tài liệu xây dựng ứng dụng minh họa Nhược điểm: • Vẫn có thời điểm hạn deadline dẫn đến chậm trễ cho đồ án • Nhóm chưa tiếp thu vận dụng triệt để tính cơng nghệ Docker số công nghệ liên quan 111 TÀI LIỆU THAM KHẢO [1] Docker Get Started [2] What is Docker [3] Cài đặt Docker Linux [4] Cài đặt Docker Window [5] Storage Docker [6] Containers vs Virtual Machines (VMs): What’s the Difference? | IBM [7] Docker Architecture, Life Cycle of Docker Containers and Data Management [8] Docker - Phần 1- Giới thiệu tổng quan Docker [9] Docker - Phần - Tìm hiểu Docker images [10] Docker Documentation [11] VueJS [12] ReactJS 112 ... trang để em thực tiếp đề tài khác tương lai Xin chân thành cảm ơn quý Thầy Cô! Nhóm sinh viên thực ĐỀ CƯƠNG CHI TIẾT TÊN ĐỀ TÀI: TÌM HIỂU DOCKER VÀ XÂY DỰNG ỨNG DỤNG MINH HỌA Cán hướng dẫn: ThS... hiện: - Tìm hiểu Virtualization, Containerization Docker - Tìm hiểu kiến trúc thành phần Docker - Tiến hành cài đặt sử dụng Docker (Docker Desktop) - Xây dựng ứng dụng thực tế áp dụng Docker Công... hành ứng dụng Docker phần mềm mã nguồn mở phổ biến cung cấp công cụ cần thiết để quản lý chạy container Mục tiêu đề tài: - Nắm bắt hiểu Docker ứng dụng - Tìm hiểu kiến trúc, thành phân Docker - Xây