Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 94 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
94
Dung lượng
4,57 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 KHOA CÔNG NGHỆ PHẦN MỀM -& - BÁO CÁO CUỐI KỲ ĐỒ ÁN ĐỀ TÀI: TÌM HIỂU VỀ DOCKER VÀ XÂY DỰNG ỨNG DỤNG MINH HỌA Giảng viên hướng dẫn: Thầy Nguyễn Công Hoan Sinh viên thực hiện: Trần Phương Duy 18520038 Tăng Khánh Chương 18520010 Lớp : SE122.M11.PMCL TP.Hồ Chí Minh, ngày tháng 12 năm 2021 LỜI CẢM ƠN Lời em xin chân thành gửi lời cảm ơn đến thầy Nguyễn Cơng Hoan nhiệt tình giảng dạy lớp, hỗ trợ thông tin cần thiết giải đáp thắc mắc cho nhóm bạn suốt trình thực đề tài Đồng thời nhóm em muốn gửi lời cảm ơn đến anh chị khóa trên, đặc biệt anh chị khoa chia sẻ kinh nghiệm quý báu môn học kiến thức liên quan Cũng xin cảm ơn bạn bè tạo điều kiện thuận, người đưa nhận xét góp ý chân thành, vơ q giá Những người động viên, hỗ trợ nhóm hồn thành đề tài Nhóm thực Thủ Đức, Tháng 12 Năm 2021 MỤC LỤC LỜI CẢM ƠN I GIỚI THIỆU CHUNG Thơng tin nhóm Tổng quan đề tài 2.1 Giới thiệu đề tài 2.2 Phạm vi nghiên cứu 2.3 Nội dung nghiên cứu 2.4 Kết hướng tới Công cụ sử dụng 6 6 7 7 II DOCKER Sự đời Docker Khái niệm Docker 2.1 Quá trình hình thành 2.2 Docker gì? Chức năng, vai trị: 3.1 Chức năng: 3.2 Vai trò: Các khái niệm Docker 4.1 Docker Engine 4.1.1 Image 4.1.2 Container 4.1.3 Network 4.1.4 Volume 4.2 Công cụ phân tán 4.2.1 Docker Registry 4.2.2 DockerHub Kiến trúc Docker Một số lệnh Docker 6.1 Image 6.2 Container 6.3 Network 6.4 Volume 6.5 DockerFile 8 8 10 12 12 12 13 13 13 15 17 17 17 17 18 18 20 20 21 22 23 24 6.6 Docker Compose III Tìm hiểu tảng học trực tuyến Giới thiệu ứng dụng minh họa 1.1 Bài tốn thực tế 1.2 Tìm hiểu mơ hình tảng học trực tuyến 1.3 Hướng giải Tìm hiểu phân tích kiến trúc tảng học trực tuyến 2.1 Giới thiệu 2.1.1 Kiến trúc tảng học trực tuyến thành phần 2.1.2 Giải pháp cho vấn đề 2.2 Cơng nghệ tảng 2.2.1 Hệ thống học tập cá nhân hóa 2.2.2 Cơng nghệ dịch vụ Web 2.2.3 Kiến trúc hướng dịch vụ 24 25 25 25 25 34 34 34 36 37 38 39 40 40 IV Ứng dụng học trực tuyến Udemy 43 Product Requirement Document 43 1.1 Objective 43 1.2 Release 43 1.3 Feature 44 1.3.1 Danh sách khóa học trực tuyến phân làm nhiều lĩnh vực 44 1.3.2 Danh sách rút gọn khóa học yêu thích 46 1.3.3 Đánh giá nhận xét giúp khóa học đáng tin cậy 47 1.3.4 Cập nhật thay đổi giảng viên sau phạm vi khóa học sau mua 48 1.3.5 Bài giảng video có phụ đề kèm resource đọc 49 1.3.6 Ghi lúc học làm quiz sau giảng 50 1.3.7 Hỏi đáp với giảng viên nhận hướng dẫn 51 1.3.8 Tạo khóa học trở thành giảng viên 51 1.4 Analytics 52 1.5 Future work 53 Use cases đặc tả use cases: 55 2.1 Sơ đồ use case 55 2.2 Danh sách usecase 56 2.3 Đặc tả use case 57 Thiết kế kiến trúc 66 4 Thiết kế liệu Thiết kế giao diện 4.1 Màn hình trang chủ 4.2 Màn hình khóa học 4.3 Màn hình chi tiết khóa học 4.4 Màn hình xem video 4.5 Màn hình khóa học 4.6 Màn hình u thích 4.7 Màn hình giỏ hàng 4.8 Màn hình tốn 4.9 Màn hình thơng tin cá nhân 4.10 Màn hình lịch sử giao dịch 4.11 Màn hình đăng khóa học 67 75 75 76 77 78 79 80 81 82 83 84 85 IV Hướng dẫn đóng gói ứng dụng Kiến trúc Tạo dockerfile Tạo docker-compose.yml Build docker-compose 87 87 87 88 90 V Kết đạt Kết đạt 1.1 Ưu điểm 1.2 Nhược điểm Hướng phát triển 91 91 91 91 91 Tài liệu tham khảo 92 I GIỚI THIỆU CHUNG Thơng tin nhóm Nhóm gồm thành viên: ● Thành viên 1: Trần Phương Duy MSSV: 18520038 Lớp: PMCL 2018.1 Email: 18520038@gm.uit.edu.vn ● Thành viên 2: Tăng Khánh Chương MSSV: 18520010 Lớp: PMCL 2018.1 Email: 18520010@gm.uit.edu.vn Tổng quan đề tài 2.1 Giới thiệu đề tài Đề tài: Tìm hiểu Docker xây dựng ứng dụng Công nghệ phát triển, hàng loạt ứng dụng tạo ra, nhiều ngơn ngữ lập trình hình thành nhằm đáp ứng nhu cầu cụ thể Những ngơn ngữ lập trình khác lại u cầu phần mềm hỗ trợ, gói thư viện mơi trường khác Mỗi lần cài đặt, tốn nhiều cơng sức thời gian Ví dụ làm việc lập trình Android, muốn làm việc với hệ điều hành iOS phải cài thêm OS để triển khai ứng dụng Python, Java, Scala… phải tiến hành cài đặt hàng tá mơi trường Đó chưa kể xung đột phần mềm, port… vấn đề thật kinh khủng xảy xung đột phần mềm làm ảnh hưởng đến hoạt động ứng dụng hoạt động máy tính Chính Docker đời, triển khai nơi đâu không phụ thuộc vào OS sở hạ tầng, thời gian khởi động cực nhanh nhiều người phát triển dự án khơng sợ sai khác mơi trường Do nhóm chúng em lựa chọn Docker để hỗ trợ đóng gói mở rộng phần mềm Về xây dựng ứng dụng, chúng em nhận thấy có web framework hỗ trợ lập trình viên việc phát triển phần mềm web cách nhanh có thể, ReactJs Từ đó, nhóm chúng em định xây dựng tảng học trực tuyến Reactjs Phần mềm gồm tính cần phức tạp cho tảng học trực tuyến 2.2 Phạm vi nghiên cứu Nhóm tập trung nghiên cứu tìm hiểu Docker, Docker Swarm ReactJs áp dụng nghiên cứu vào việc xây dựng ứng dụng minh họa để giúp có nhìn tổng quan hiểu sâu 2.3 Nội dung nghiên cứu Tiến hành nghiên cứu chi tiết thành phần kiến trúc Docker, cách thức hoạt động làm quen với câu lệnh Docker Docker Swarm Kèm theo xây dựng ứng dụng minh họa ReactJs 2.4 Kết hướng tới ● Nền tảng học trực tuyến xây dựng ReactJs ● Sử dụng Docker để đóng gói hỗ trợ mở rộng phần mềm ● Mở rộng việc triển khai điều phối Docker Swarm Swarm Pit Công cụ sử dụng ● Đóng gói ứng dụng Docker ● Xây dựng ứng dụng ReactJs ● Xây dựng sở liệu Nodejs II DOCKER Sự đời Docker Docker tảng mã nguồn mở cung cấp cho người sử dụng công cụ để đóng gói, vận chuyển chạy container cách đơn giản dễ dàng tảng khác cách nhanh với tiêu chí - “Build once, run anywhere” Docker thực ảo hóa mức hệ điều hành Mỗi container lập (isolated) với dùng chung số bin/lib kernel Host OS Docker làm việc nhiều tảng khác Linux, Microsoft Windows Apple OS X Ngồi ra, Docker cịn hỗ trợ nhiều dịch vụ điện toán đám mây tiếng Microsoft Azure hay Amazon Web Services Khái niệm Docker 2.1 Quá trình hình thành Bắt đầu từ ngày đầu tiên, mơ hình server thường Máy chủ vật lý + Hệ điều hành + Application Vậy muốn xài dịch vụ ta phải có server vậy, chi phí cho server khơng tí Tiếp theo đời cơng nghệ ảo hóa virtualization Virtualization (ảo hóa) cơng nghệ thiết kế để tạo tầng trung gian phần cứng máy tính phần mềm chạy Ảo hóa xây dựng dựa ý tưởng phân chia ổ đĩa, chúng phân chia máy chủ gốc thành nhiều máy chủ logic Từ đó, máy chủ vật lý đơn giản tạo thành nhiều máy ảo chạy độc lập, riêng rẽ với Các máy ảo có hệ điều hành riêng, ứng dụng riêng, độc lập với máy ảo khác Tuy nhiên, việc ảo hóa nảy sinh nhiều vấn đề mới: ngốn tài nguyên, tốn thời gian thực thi, cồng kềnh chúng chiếm ln phần cứng máy host từ cài Để giải vấn đề trên, người ta phát minh Containerization Containerization sử dụng container, container sử dụng chung nhân OS kernel với máy chủ host, điều có nghĩa container hoạt động cần tài nguyên, trực tiếp lấy từ máy host phần mềm bình thường chạy máy host vậy, điều tránh lãng phí tài ngun từ máy ảo khơng sử dụng cơng nghệ virtualization Vậy cơng nghệ containerization dùng đây? Đó Docker 2.2 Docker gì? Docker phần mềm chạy Linux Windows, cho phép dựng, kiểm thử triển khai ứng dụng cách nhanh chóng Docker đóng gói phần mềm vào đơn vị tiêu chuẩn hóa gọi container 10 4.6 Màn hình u thích 80 4.7 Màn hình giỏ hàng 81 4.8 Màn hình tốn 82 4.9 Màn hình thơng tin cá nhân 83 4.10 Màn hình lịch sử giao dịch 84 4.11 Màn hình đăng khóa học 85 86 IV Hướng dẫn đóng gói ứng dụng Kiến trúc Tạo dockerfile Ta tạo Dockerfile thư mục gốc project 87 Tạo docker-compose.yml Trong Docker Compose ta định nghĩa sau: 88 docker-compose giúp cho chạy nhiều container với services lúc Ở đây, services đóng gói là: express_server: server application chính, chứa mơi trường chạy lẫn code Nodejs Các dòng lệnh “stdin_open: true” “environment: CHOKIDAR_USEPOLLING: true” giúp cho server tự khởi động lại trường hợp lưu lại code migration: setup liệu mẫu khởi động ứng dụng lần đầu nginx: web server hỗ trợ việc Load balance scale ứng dụng 89 mongo: NoSQL database, ánh xạ từ cổng 8081 sang cổng 8081 docker container Build docker-compose Đầu tiên, máy chưa có image “express_server" ta cần build image với lệnh sau đường dẫn gốc thư mục: docker build -t “express_server" Sau có image “express_server", ta sex tiến hành chạy container dựa docker-compose câu lệnh: docker-compose up Các services khác khơng có image máy local nginx hay mongo pull từ docker hub sử dụng, service “migration” sử dụng chung image “express_server" nên không cần build image Sau có đầy đủ image, docker-compose tiến hành chạy containers Cuối cùng, ta truy cập vào localhost:3000 (do application sử dụng port 3000) để xem việc setup thành công hay chưa 90 V Kết đạt Kết đạt 1.1 Ưu điểm ● Học sử dụng công nghệ Reactjs kiến trúc MVC Client-Server ● Hiểu vận dụng Docker ● Sản phẩm minh họa giao diện trực quan, dễ nhìn Cài đặt hoàn chỉnh số chức cần thiết ● Tìm hiểu phân tích kiến trúc sử dụng ● Tìm hiểu tảng giáo dục áp dụng thực ứng dụng tảng học trực tuyến 1.2 Nhược điểm ● Các tính ứng dụng minh họa chưa tối ưu hồn thiện ● Demo SwarmPit cịn phụ thuộc vào PlayWithDocker nên bị hạn chế thời gian tiếng sử dụng Hướng phát triển ● Sẽ deploy Heroku để khơng chạy local máy người mà cịn truy cập từ Internet ● Phát triển thêm tính bật so với tảng học trực tuyến khác ● Kết hợp mơ hình lại với để phần mềm tối ưu hiệu 91 ● Phát triển thêm ứng dụng mobile cho người dùng ● Tìm hiểu thêm scale up Kubernetes để hồn thiện hệ thống scale up Tài liệu tham khảo ● Về Docker: ○ Duong Hoai Nam, “Tìm hiểu Docker số khái niệm bản,” Viblo, Nov 19, 2020 ○ https://viblo.asia/p/tim-hieu-ve-docker-va-mot-so-khai-niem-co-ban-GrLZD3 OOKk0 (accessed Jun 26, 2021) ○ [2] No Naem, “Sơ lược qua kiến trúc hệ thống Docker.,” Viblo, Feb 15, 2019 https://viblo.asia/p/so-luoc-qua-ve-kien-truc-he-thong-cua-docker-07LKX2vpl V4 (accessed Jun 26, 2021) ○ [3] Tran Son, “DOCKER LÀ GÌ? - Market Enterprise Việt Nam Docker,” Market Enterprise Việt Nam, Jun 10, 2020 ○ https://www.marketenterprise.vn/blog/docker-la-gi.html (accessed Jun 26, 2021) ○ [4] “Docker - Phần 1- Giới thiệu tổng quan Docker,” Apr 13, 2021 ○ https://hocchudong.com/phan-1-gioi-thieu-tong-quan-ve-docker/ (accessed Jun 26, 2021) ○ [5] Tuan Anh Le, “Docker Swarm,” Kiến trúc Microservices https://www.microservicesvn.com/docs/container/swarm-three.html (accessed Jun 26, 2021) ○ [6] Le Thi Swarm Ngoc Tram, “Tìm hiểu chi tiết Docker (Phần 1).” 92 https://viblo.asia/p/tim-hieu-chi-tiet-ve-docker-swarm-phan-1-eW65GW795D O (accessed Jun 26, 2021) ● Về Reactjs: ○ https://codegym.vn/blog/2021/03/30/tai-lieu-hoc-reactjs/ ○ https://reactjs.org/docs/typechecking-with-proptypes.html ○ https://topdev.vn/blog/reactjs-nhung-dieu-ban-can-phai-biet/ ○ https://openplanning.net/12115/gioi-thieu-ve-react ● Về mơ hình cho ứng dụng: ○ https://tarjomefa.com/wp-content/uploads/2017/02/6068-English-TarjomeFa.p df?fbclid=IwAR3g4_Nki7MYhWl9ddp0t19l6h7NQ1b7J8D-3r4YqjNiHfFgXl zqcUfBiDw 93 94 ... Docker Swarm Swarm Pit Cơng cụ sử dụng ● Đóng gói ứng dụng Docker ● Xây dựng ứng dụng ReactJs ● Xây dựng sở liệu Nodejs II DOCKER Sự đời Docker Docker tảng mã nguồn mở cung cấp cho người sử dụng. .. trúc Docker, cách thức hoạt động làm quen với câu lệnh Docker Docker Swarm Kèm theo xây dựng ứng dụng minh họa ReactJs 2.4 Kết hướng tới ● Nền tảng học trực tuyến xây dựng ReactJs ● Sử dụng Docker. .. nghiên cứu Nhóm tập trung nghiên cứu tìm hiểu Docker, Docker Swarm ReactJs áp dụng nghiên cứu vào việc xây dựng ứng dụng minh họa để giúp có nhìn tổng quan hiểu sâu 2.3 Nội dung nghiên cứu Tiến