Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 46 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
46
Dung lượng
1,35 MB
Nội dung
ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM Nguyễn Thanh Thọ – 17521093 Đồng Việt Tùng - 17521231 ĐỒ ÁN Tìm hiểu Docker xây dựng ứng dụng KỸ SƯ NGÀNH KỸ THUẬT PHẦN MỀM GIẢNG VIÊN HƯỚNG DẪN Ths Nguyễn Cơng Hoan TP HỒ CHÍ MINH, 2021 LỜI CẢM ƠN Lời đầu tiên, chúng em xin chân thành cảm ơn thầy Nguyễn Công Hoan – giảng viên phụ trách – hướng dẫn tận tình chúng em thời gian thực đồ án Nhờ có giúp đỡ tận tình thầy chúng em hồn thành đồ án cách tốt Tuy chúng em cố gắng hạn chế sai sót hết mức kiến thức cịn hạn hẹp nên chúng em khó tránh khỏi sai sót q trình thực lúc báo cáo đồ án Do đó, chúng em mong nhận ý kiến đóng góp từ thầy để chúng em khắc phục, sửa chữa Chúng em xin chân thành cảm ơn thầy! LỜI NHẬN XÉT CỦA GIẢNG VIÊN MỤC LỤC LỜI CẢM ƠN LỜI NHẬN XÉT CỦA GIẢNG VIÊN MỤC LỤC DANH MỤC HÌNH TÓM TẮT ĐỒ ÁN Chương 1: Kiến thức Docker 1.1 Giới thiệu sơ lược Docker 1.1.1 Docker gì? 1.1.2 Lịch sử đời 1.1.3 Roadmap phát triển 1.2 Kiến trúc tổng thể 1.2.1 Docker Engine 1.2.2 Docker Hub 10 1.2.3 Một số thuật ngữ 10 1.3 Cách thức hoạt động 11 1.4 Docker mang lại lợi ích gì? Cho ai? Trong hồn cảnh nào? 13 1.3.1 Lợi ích hồn cảnh sử dụng 13 1.3.2 Ai sử dụng Docker 13 1.5 Một số công cụ phổ biến 13 1.5.1 Docker Compose 13 1.5.2 Docker Swarm 13 1.6 So sánh Docker với công nghệ tương tự 14 Chương 2: Áp dụng Docker 16 2.1 Setup Dockerfile 16 2.1.1 NestJs - backend 16 Giải thích thơng số 17 Run project với nestjs 17 2.1.2 VueJs - frontend 17 Run Project cho VueJs 18 2.2 Setup Docker-Compose 19 2.2.1 Quy trình 19 2.2.2 Docker-compose file 19 Chương 3: Phát triển Website học tiếng anh 21 3.1 Mô tả ứng dụng 21 3.2 Sơ đồ Use case 22 3.2.1 Tổng quát 22 3.2.2 Đặc tả Use Case 24 3.3 Sơ đồ Lớp 44 Chương 4: Kết luận Hướng phát triển 45 4.1 Kết đạt 45 4.2 Hạn chế 45 4.3 Hướng phát triển 45 Chương 5: Tài liệu tham khảo 46 DANH MỤC HÌNH Hình 1.1: Kiến trúc Docker Hình 1.2: Trang Docker hub 10 Hình 1.3: So sánh kiến trúc container Virtual Machines 11 Hình 1.4: Kiến trúc phân lớp container 12 Hình 2.1: Build dockerfile cho VueJs 18 Hình 2.2: Run dockerfile 18 Hình 3.1: Sơ đồ Use case tổng quát 23 Hình 3.2: Đặc tả Use case quản lý học viên 24 Hình 3.3: Đặc tả Use case quản lý khóa học 26 Hình 3.4: Đặc tả Use case quản lý tài khoản người dùng 28 Hình 3.5: Đặc tả Use case quản lý speaker 30 Hình 3.6: Đặc tả Use case tìm kiếm khóa học 31 Hình 3.7: Đặc tả Use case quản lý khóa học cho User 33 Hình 3.8: Đặc tả Use case quản lý khóa học cho Speaker 35 Hình 3.9: Đặc tả Use case quên mật 36 Hình 3.10: Đặc tả Use case cập nhật thông tin tài khoản 38 Hình 3.11: Đặc tả Use case livestream 39 Hình 3.12: Đặc tả Use case quản lý buổi học 40 Hình 3.13: Đặc tả Use case xem livestream 41 Hình 3.14: Đặc tả Use case đăng ký trở thành speaker 43 Hình 3.15: Sơ đồ lớp 44 TÓM TẮT ĐỒ ÁN Hiện nay, Docker dần trở thành công cụ thiếu cho lập trình viên, đặc biệt lập trình viên chun web Do đó, mục tiêu đồ án tìm hiểu Docker, kiến trúc công nghệ chức bật Docker Sau thơng qua việc tích hợp Docker vào q trình phát triển website để làm bật lên ưu điểm Docker Website dùng làm ứng dụng minh họa cho công nghệ Docker website học tiếng Anh Trong trình phát triển, chúng em sử dụng máy với hệ điều hành mơi trường phát triển khác Sau sử dụng Docker để hỗ trợ cho việc phát triển website Từ rút lợi ích mà Docker mang lại Sau trình sử dụng Docker đồ án 2, chúng em nhận thấy việc sử dụng Docker giúp chúng em giảm thiểu đáng kể lỗi không đáng có bất đồng mơi trường cài đặt, kiểm thử, phát triển Chương 1: Kiến thức Docker 1.1 Giới thiệu sơ lược Docker 1.1.1 Docker gì? Docker tảng cho nhà phát triển sysadmin để phát triển, triển khai ứng dụng với container Nó cho phép tạo môi trường độc lập tách biệt để khởi chạy phát triển ứng dụng môi trường gọi container Khi cần triển khai lên server cần run container Docker ứng dụng bạn hoạt động 1.1.2 Lịch sử đời Docker thành lập ơng Solomon Hykes and Sebastien Pahl Nó sản phẩm nhóm startup Y Combinator phát triển công bố 2011 Lúc đầu Docker project dự án nội công ty dotCloud, platform-as-aservice Pháp Lần docker công bố dạng open-source tháng năm 2013 Từ phiên 0.9 docker dùng component riêng biết Go ( Golang ) để thay cho việc dùng LXC(linux system) làm môi trường thực thi Vào năm 2017 docker tạo Moby project để phát triển vấn đề đa nhân thay cho việc dùng docker engine 1.1.3 Roadmap phát triển Tháng 9-2013 Red hat docker công bố hợp tác xoay quanh Fedora, RHEL, OpenShift Tháng 10-2014 cơng bố tích hợp Docker engine vào windows server hỗ trợ native cho docker client windows Tháng 11-2014 Docker công bố hợp tác với Stratoscale(công ty làm data center operating system Vmware sản phẩm).Ngoài ra, Docker container support cho EC2 Amazon Tháng 12-2014, IBM công bố hợp tác với Docker tích hợp docker vào Cloud IBM Tháng 6-2015, Docker số công ty như: CoreOS, Google, Microsoft, AWS, công bố liên kết với để cung cấp giải pháp tiêu chuẩn hệ điều hành cho software containers Tháng 5-2016 nghiên cứu cho thấy tổ chức tham gia đónng góp cho docker là: The Docker Teamm Cisco, Google, Huawei,IBM, Microsoft and Red Hat Tháng 6-2016, Microsoft cơng bố docker sử dụng Windown 10 Tháng 5-2019 WSL2 windows hỗ trợ chạy Docker 1.2 Kiến trúc tổng thể Hình 1.1: Kiến trúc Docker Docker có thành phần chính: Docker Engine Docker Hub Docker Engine giải pháp ảo hóa (virtualization) dựa cơng nghệ container, Docker Hub platform Software-as-a-Service để chia sẻ images 1.2.1 Docker Engine Docker Engine ứng dụng dựa kiến trúc client-server với thành phần chính: Docker daemon đóng vai trị server Docker daemon build, run distribute docker container Một REST API đóng vai trị interface để giao tiếp với docker daemon Một command line interface (CLI) đóng vai trị client Docker client giao tiếp với docker daemon thông qua REST API, kết nối với thông qua UNIX socket qua giao tiếp mạng Việc giao phương thức cho phép Docker Client Docker Daemon chạy hệ thống khác hệ thống 1.2.2 Docker Hub Docker hub nơi lưu trữ image (public private) Ở người dùng chia sẻ customized image Ngoài ra, người dùng tìm tải image thơng qua docker client Hình 1.2: Trang Docker hub 1.2.3 Một số thuật ngữ Image: Là package chứa tất thông tin, thư viện, framework, cần thiết để tạo container Thông thường, image tạo dựa image cha (based image) – image cha cung cấp sẵn docker Container: Về bản, container cơng nghệ ảo hóa thay phải giả lập phần cứng Vmware container chia sẻ hệ điều hành với host Mỗi 10 Description Là User, tơi muốn tìm kiếm khóa học để tìm hiểu thơng tin khóa học mà tơi muốn Là User, tơi muốn tìm kiếm khóa học liên quan đến từ khóa mà tơi muốn Actor(s) User Priority Must have Trigger Khi người dùng muốn tìm kiếm khóa học Pre-Condition(s) Người dùng đăng nhập vào tài khoản (Admin, Student Pro/Free, Speaker) Post-Condition(s) Hệ thống thể thông tin liên quan đến khóa học dựa vào từ khóa người dùng nhập vào qua lệnh tìm kiếm nâng cao Basic Flow Người dùng nhấn vào tìm kiếm khóa học Người dùng thực tìm kiếm Người dùng chọn khóa học Người dùng chọn lệnh tùy theo nhu cầu Hệ thống ghi lại thông tin hoạt động Alternative Flow 2a Người dùng chọn tìm kiếm nâng cao 2a.1 Người dùng chọn sử dụng nhiều tiêu chí định trước 2a.2 Hệ thống danh sách khóa học theo tiêu chí mà người dùng chọn Use case tiếp tục thực bước 2b Người dùng chọn tìm kiếm theo từ khóa 2b.1 Người dùng nhập vào từ khóa 2b.2 Hệ thống danh sách khóa học theo từ khóa mà người dùng nhập Use case tiếp tục thực bước 4a Người dùng chọn lệnh đăng ký khóa học 4a.1 Hệ thống lưu thông tin yêu cầu đăng ký khóa học người dùng Use case tiếp tục thực bước 4b Người dùng chọn xem thông tin khóa học 4b.1 Hệ thống thể thơng tin khóa học mà người dùng chọn Exception Flow 4b.1 Nếu người dùng chọn đăng ký khóa học 32 Use case thực bước 4a + + + 4: Nếu người dùng lệnh hủy quay lại Use case kết thúc Business Rules Các tiêu chí tìm kiếm nâng cao nhập chủ hệ thống Non-Functional Requirement 3.2.2.6 Quản lý khóa học User Hình 3.7: Đặc tả Use case quản lý khóa học cho User Use case ID USC-06.01 Use case name Quản lý khóa học - User Description Là User, tơi muốn quản lý thơng tin khóa học mà đăng ký 33 Actor(s) User Priority Must have Trigger Người dùng muốn xem thơng tin khóa học mà người dùng đăng ký Pre-Condition(s) Người dùng đăng nhập thành cơng Các khóa học mà người dùng muốn xem thông tin phải đăng ký học người dùng Post-Condition(s) Hệ thống thể thông tin liên quan đến khóa học Hệ thống ghi nhận hoạt động Basic Flow Người dùng nhấn vào quản lý khóa học Hệ thống tin tức video học cho người dùng Người dùng chọn lệnh tùy theo nhu cầu Hệ thống ghi lại thông tin hoạt động Alternative Flow 3a Người dùng chọn lệnh xem thơng tin khóa học 3a.1 Hệ thống thể danh sách khóa học mà người dùng đăng ký 3a.2 Người dùng chọn khóa học 3a.3 Hệ thống tất video buổi học 3a.4 Người dùng chọn video 3a.5 Hệ thống video cho người dùng xem Use case thực tiếp bước 3b Người dùng chọn lệnh xóa khóa học 3b.1 Người dùng chọn khóa học cần hủy 3b.2 Người dùng nhập lý hủy 3b.3 Hệ thống xử lý yêu cầu hủy khóa học Use case thực tiếp bước Exception Flow + 3: Người dùng dùng lệnh hủy quay lại Use case kết thúc Business Rules Khi Speaker đăng video học mới, người dùng nhận mail thông báo Non-Functional Requirement 34 Speaker Hình 3.8: Đặc tả Use case quản lý khóa học cho Speaker Use case ID USC-06.02 Use case name Quản lý khóa học - Speaker Description Là Speaker, tơi muốn quản lý thơng tin khóa học mà dạy Actor(s) Speaker Priority Must have Trigger Speaker có nhu cầu chỉnh sửa thơng tin khóa học Pre-Condition(s) Speaker phải đăng nhập thành công Post-Condition(s) Các khóa học chỉnh sửa thành cơng Hệ thống ghi nhận hoạt động Basic Flow Speaker nhấn vào quản lý khóa học Speaker chọn lệnh tùy theo nhu cầu Hệ thống ghi lại thông tin hoạt động Alternative Flow 2a Speaker chọn lệnh Yêu cầu tạo khóa học 2a.1 Speaker điền thơng tin cần thiết cho khóa học 2a.2 Speaker gửi yêu cầu lên hệ thống Use case thực tiếp bước 35 2b Speaker chọn lệnh Xóa khóa học 2b.1 Speaker chọn khóa học 2b.2 Hệ thống yêu cầu xác nhận 2b.3 Speaker xác nhận 2b.4 Hệ thống xử lý yêu cầu xóa khóa học 2b.5 Hệ thống gửi thơng báo đến học viên tham gia vào khóa học Use case thực tiếp bước 2c Speaker chọn lệnh Sửa khóa học 2c.1 Speaker chọn khóa học 2c.2 Speaker sửa thơng tin khóa học 2c.3 Hệ thống u cầu xác nhận 2c.4 Speaker xác nhận Use case thực tiếp bước Exception Flow + + 3: Speaker dùng lệnh hủy quay lại Use case kết thúc Business Rules Speaker có quyền khởi tạo yêu cầu tạo khóa học Non-Functional Requirement 3.2.2.7 Quên mật Hình 3.9: Đặc tả Use case quên mật Use case ID USC-07 Use case name Quên mật 36 Description Là người dùng, muốn quên mật khẩu, hệ thống có phương thức thay đổi mật Actor(s) User Priority Must have Trigger Khi người dùng quên mật Pre-Condition(s) Post-Condition(s) Người dùng thay đổi mật Basic Flow Người dùng nhấn quên mật Người dùng nhập mail reset mật Hệ thống xác nhận mail có sở liệu Hệ thống gửi mail reset mật Người dùng nhấn đường link reset mật Người dùng tạo mật Hệ thống cấp nhật thông tin vào sở liệu Alternative Flow Exception Flow Người dùng nhập mail khơng có hệ thống Hệ thống lỗi Business Rules Người dùng nhập mật sai q lần thơng báo khuyến khích dùng chức quên mật Non-Functional Requirement 37 3.2.2.8 Cập nhật thơng tin tài khoản Hình 3.10: Đặc tả Use case cập nhật thông tin tài khoản Use case ID USC-08 Use case name Cập nhật thông tin tài khoản Description Là người dùng, tơi muốn chỉnh sửa thông tin tài khoản Actor(s) User Priority Must have Trigger Khi người dùng có nhu cầu thay đổi thông tin tài khoản Pre-Condition(s) Người phải đăng nhập thành công Post-Condition(s) Thông tin tài khoản chỉnh sửa thành công Hệ thống ghi lại thông tin hành động Basic Flow Người dùng nhấn Cập nhật thông tin tài khoản Người dùng chỉnh sửa thông tin cần thiết Hệ thống yêu cầu xác nhận Người dùng xác nhận 38 Hệ thống cập nhật thông tin vào sở liệu Hệ thống ghi lại thông tin hành động Alternative Flow Exception Flow 1->5: Người dùng dùng lệnh hủy Use case kết thúc Business Rules Non-Functional Requirement 3.2.2.9 Livestream Hình 3.11: Đặc tả Use case livestream Use case ID USC-09 Use case name Livestream Description Là speaker, muốn tổ chức buổi livestream trực tuyến để giảng dạy độc quyền cho Student Pro Actor(s) Speaker Priority Nice to Have Trigger Speaker muốn tổ chức buổi livestream Pre-Condition(s) Speaker phải đăng nhập thành công Post-Condition(s) Speaker livestream thành công 39 Basic Flow Speaker nhấn Livestream Speaker dùng lệnh bắt đầu livestream Hệ thống xử lý yêu cầu bắt đầu livestream Hệ thống gửi thơng báo đến học viên có loại tài khoản Student Pro Speaker dùng lệnh kết thúc livestream Hệ thống xử lý yêu cầu kết thúc livestream Alternative Flow Exception Flow Người dùng dùng lện quay lại Use case kết thúc Business Rules Non-Functional Requirement 3.2.2.10 Quản lý buổi học Hình 3.12: Đặc tả Use case quản lý buổi học Use case ID USC-10 Use case name Quản lý buổi học 40 Description Là speaker, muốn quản lý thông tin buổi học khóa học Actor(s) Speaker Priority Must have Trigger Speaker có nhu cầu thay đổi thơng tin buổi học Pre-Condition(s) Speaker đăng nhập thành công Post-Condition(s) Thông buổi học chỉnh sửa thành công Basic Flow Speaker nhấn Quản lý buổi học Speaker chọn lệnh chỉnh sửa thông tin buổi học Speaker tiến hành chỉnh sửa thông tin buổi học Hệ thống yêu cầu xác nhận lại Speaker xác nhận Hệ thống xử lý yêu cầu chỉnh sửa Alternative Flow Speaker nhấn Quản lý buổi học Speaker chọn lệnh livestream Use case thực thiện Use case USC-09 Exception Flow Người dùng lệnh hủy Use case kết thúc Business Rules Non-Functional Requirement 3.2.2.11 Xem Livestream Hình 3.13: Đặc tả Use case xem livestream Use case ID USC-11 41 Use case name Xem livestream Description Là Student Pro, muốn xem speaker trực tiếp livestream tương tác trực tiếp với giảng viên thông qua chat Actor(s) Student Pro Priority Nice to have Trigger Người dùng muốn xem livestream buổi học Pre-Condition(s) Người dùng đăng nhập thành công Tài khoản phải Student Pro Speaker phải livestream Post-Condition(s) Student Pro xem livestream Student Pro chat với speaker Basic Flow Student Pro nhấn xem livestream Hệ thống xử lý yêu cầu xem livestream Hệ thống buổi livestream lên người dùng Alternative Flow Exception Flow Student Pro nhấn xem livestream Hệ thống xử lý yêu cầu xem livestream Hệ thống buổi livestream lên người dùng Student Pro nhập phần bình luận Hệ thống xử lý yêu cầu bình luận Hệ thống phần bình luận Hệ thống xử lý yêu cầu không thành công Use case kết thúc Người dùng dùng lệnh hủy quay lại: Use case kết thúc Business Rules Non-Functional Requirement 42 3.2.2.12 Đăng ký trở thành Speaker Hình 3.14: Đặc tả Use case đăng ký trở thành speaker Use case ID USC-12 Use case name Đăng ký trở thành Speaker Description Là học viên, tơi muốn đăng ký trở thành Speaker cho hệ thống Actor(s) Student Free Priority Must have Trigger Học viên có yêu cầu trở speaker Pre-Condition(s) Student Free đăng nhập thành công Post-Condition(s) Hệ thống ghi nhận yêu cầu trở thành speaker Basic Flow Học viên nhấn đăng ký trở thành speaker Học viên điền thông tin cần thiết 43 Hệ thống yêu cầu xác nhận Học viên xác nhận Hệ thống ghi nhận yêu cầu Alternative Flow Exception Flow Nếu người dùng dùng lệnh hủy quay lại Use case kết thúc Business Rules Non-Functional Requirement 3.3 Sơ đồ Lớp Hình 3.15: Sơ đồ lớp 44 Chương 4: Kết luận Hướng phát triển 4.1 Kết đạt - Website có chức - Chúng em áp dụng thành công việc sử dụng Docker vào trình phát triển 4.2 Hạn chế - Do thời gian có hạn nên cịn nhiều chức chưa hồn thành - Website chạy localhost 4.3 Hướng phát triển - Hoàn thành chức chưa phát triển - Triển khai Website lên server cấp domain cho website 45 Chương 5: Tài liệu tham khảo [1] https://docs.docker.com/ [2] https://docs.microsoft.com/en-us/dotnet/architecture/microservices/containerdocker-introduction/docker-terminology [3] A Survey on Docker and its Significance in Cloud Environment - Amith Raj M.P , Ashwini M.L , Bhagyashree Das , Vaidehi M [4] https://viblo.asia/p/tim-hieu-chi-tiet-ve-docker-swarm-phan-1eW65GW795DO#_kien-truc-docker-swarm 46 ... sử dụng Docker giúp chúng em giảm thiểu đáng kể lỗi khơng đáng có bất đồng môi trường cài đặt, kiểm thử, phát triển Chương 1: Kiến thức Docker 1.1 Giới thiệu sơ lược Docker 1.1.1 Docker gì? Docker. .. Hình 3.15: Sơ đồ lớp 44 TÓM TẮT ĐỒ ÁN Hiện nay, Docker dần trở thành công cụ thiếu cho lập trình viên, đặc biệt lập trình viên chuyên web Do đó, mục tiêu đồ án tìm hiểu Docker, kiến... chúng em sử dụng máy với hệ điều hành môi trường phát triển khác Sau sử dụng Docker để hỗ trợ cho việc phát triển website Từ rút lợi ích mà Docker mang lại Sau trình sử dụng Docker đồ án 2, chúng