CI/CD: SpringBoot, MySQL, Jenkins, Docker, AWS
Ғылым және технология
CI/CD là gì?
Trong video này mình sẽ tạo 1 CI/CD pipeline để triển khai ứng dụng SpringBoot và MySQL lên môi trường local và cloud EC2 AWS.
Mình sử dụng Jenkins, Ansible và Docker làm các công cụ Devops hỗ trợ quá trình này.
#devops #devopslagi #hocdevops #devopscoban #laptrinh #laptrinhvien #microservices #laptrinhweb #devopscoban #hocdevops #docker #cicd
#roadmap #devopsroadmap #lotrinhhocdevops #jenkins #k8s #kubernetes
#ansible#lotrinhdevops #github #aws #ec2
Doc tài liệu cho bài lab: shorturl.at/fzM03
Facebook: / dinhlehoang97
Link Facebook group: / 899830471097713
Пікірлер: 96
Bài viết rất hay, hay về cả nội dung và cách diễn đạt. Thanks bro
Video quá hữu ích và chất lượng từ nội dung đến hình ảnh, chúc kênh anh sớm thành công ạ
Video giải thích rất dễ hiểu và tường minh. Cảm ơn anh vì video bổ ích này ạ 😊
1 vid quá hữu ích. Chúc anh thành công trong những vid sắp tới.
Video chất lượng quá anh, mong anh ra thêm những vid về chủ đề này ạ
cảm ơn bạn . Bài hướng dẫn rất có tâm !!
quá dễ hiểu + chi tiết, rất hóng khóa học của bạn ra là mình súc liền :D
Tuyệt vời quá, rất biết ơn bạn 🎉🎉🎉🎉
Hix. Thứ mà em tìm kiếm bấy lâu nay😢😢😢 Cảm ơn anh cực kỳ nhiều.
Cảm ơn anh nhiều, em đang kiếm mấy bài CI/CD như này ❤❤❤
Em cảm ơn anh, video rất hay và hữu ích ạ.
anh làm video rất hay . mong a ra nhièu video hướng dẫn cho anh em bắt đầu làm DevOp từ đầu
Video quá hay và dễ hiểu
Video rất hay và bổ ích. Mong bạn làm thêm nhiều video về CI/CD😊
Hay quá anh ơi, mong anh ra nhiều hơn nữa về devOps. luôn ủng hộ anh
Hay quá anh, mong anh ra thêm nhiều video về chủ đề này
Cảm ơn anh rất nhiều ạ
Cảm ơn anh đã chia sẻ
hữu ích quá, cảm ơn anh
Video anh làm hay nhưng ít người xem quá, mong kênh ngày càng phát triển
Chờ mãi giờ mới có full flow. Video đợt sau mong anh bonus thêm K8s nữa tại e thấy skill này khá hot vs devops.
Hay quá anh ơi!
rất hữu ích anh ơi, em đang theo học DevOps nên mong anh có thể thêm nhiều video hướng dẫn, nguồn học và tài nguyên , cũng như có thể liên hệ với anh ạ
mong anh ra nhieu video
Hay bạn ơi đúng cái đang cần kkk
quá là bổ ích
Hay quá anh
hay quá anh ơi
hay quá anh
Hello a iuuuu
👍
Lâu lắm mới gặp một ông phát âm đúng chữ Linux ;)
@khalid_dinh
10 ай бұрын
:))) sửa nhiều rồi đấy
Rất mong chờ các khóa học sắp tới của anh. Cho em hỏi là khóa đầu tiên về chủ đề gì và tầm nào release đó ạ?
@khalid_dinh
11 ай бұрын
Khoá về Docker nhé
ra khóa DevOps thoi anh ơi :D
Bài này có thêm Terraform ( hoặc CloudFormation ) để tự động hoá việc tạo máy ảo nữa thì perfect anh ạ
@khalid_dinh
11 ай бұрын
Ừm. Nhưng sợ hơi nhiều tool quá cho newbie
@ngocthiennguyen3318
11 ай бұрын
@@khalid_dinh thêm cái này nữa người mới như em là ngộp chết
tại sao video này không có sớm hơn cho tôi đỡ khổ, tks!!!
Em rất biết ơn anh vì đã bỏ công sức để làm ra bài lab này ❤ mà em cũng có một số thắc mắc mong anh giải đáp giúp em do em cũng chưa đi làm nên cũng không rõ như thế nào nữa. 1. Như trong bài lab này thì anh có sẵn ready-production project để thực hiện CI/CD. Vậy nếu như lúc bắt đầu dự án thì bắt đầu CI/CD như thế nào ạ, chẳng hạn bắt đầu từ lúc chưa có code gì hay bên đội devs đã tạo một feature đầu tiên rồi mới thực hiện CI/CD. Và thêm nữa bên đội testers sẽ tham gia vào quy trình này như thế nào ạ. 2. Với lại việc quy trình ci/cd của project theo kiến trúc monolith hay microservices có khác nhau gì không anh nhỉ. Cảm ơn anh ạ 😊
@khalid_dinh
11 ай бұрын
1. CI/CD bắt đầu khi Dev đã hoàn thành code, (1 hoặc nhiều chức năng). Lúc này cần đẩy code cho tester để test. Sau khi test xong, code được đóng gói, lưu trữ, rồi triển khai lên các môi trường. Tester có thể tham gia ngay từ đầu để chuẩn bị test case dựa vào requirements của project. Còn Devops chỉ tạo luồng tự động giữa Dev, Test, Operation. Về cơ bản là các team có thể làm việc song song, để k phải chờ đợi nhau. 2. CI/CD mỗi dự án khác nhau đều khác nhau chứ k chỉ là giữa monolithic và microservices.
@williamlin8709
11 ай бұрын
@@khalid_dinh Yah, cảm ơn anh rất nhiều ^^
Một kiến thức có ích...!! Sứ giả của Allah (ﷺ) nói: "Khi một người đàn ông chết, những việc làm của anh ta kết thúc ngoại trừ ba điều: Sadaqah Jariyah (từ thiện không ngừng); một kiến thức có ích, hoặc một người con/hậu duệ đức hạnh cầu nguyện cho anh ta ( cho người đã khuất)".
Anh ơi cho em hỏi em không có cloud thì dùng máy ảo vật lý để tạo server đc ko ạ. Em cảm ơn
là ngay từ đầu anh chạy bằng máy ảo ạ
QA vs Staging là gì vậy ạ, em ko hỉu tại sao phải tạo tới 2 server
anh ơi hiện tại khi build mutilbranch pipeline thì em bị lỗi Packing pushing, deploy mysql với deploy spring boot là sao ạ anh giúp em với
Mn ơi cho mình hởi là nếu làm đc và hiểu hết những cái công cụ anh ý nói thì đi xinn việc được chưa ạ
A ơi cho e hỏi là khi làm tới bước create a job và gắn link github vào thì nó báo lỗi This folder is empty There are no branches found that contain buildable projects. Jenkins automatically builds and manages projects in branches that contain recognizable projects. Pipeline Branch projects support building branches within a repository containing a pipeline script. By default it uses a file named Jenkinsfile in the root directory. Nhưng project e đầy đủ hết rồi, lỗi này là sao vậy ạ?
anh cho em xin script builld image anh khởi tạo jenkins vs ạ
e cũng có tìm hiểu về CI/CD mà ở trên mạng đọc vẫn đang mông lung quá. a có thể giải thích qua cho e về CI/CD đc k ạ
@khalid_dinh
11 ай бұрын
a có 1 video giới thiệu về CI/CD rồi đấy. Xem nếu k hiểu chỗ nào thì hỏi nhé
bao giờ anh ra khóa devOps thế anh ơiiiii
@khalid_dinh
11 ай бұрын
Sắp rồi :)))
anh ơi cho em hỏi, khi mới bắt đầu học ansible thì làm sao để nhớ được hết mấy cái module trong playbook a nhỉ
@khalid_dinh
10 ай бұрын
Nhớ cái nào hay dùng thôi chứ sao nhớ hết nổi
Em có chút thắc mắc mong được anh giải đáp ạ. Theo như bài Lab thì anh sẽ dựng 2 EC2 instance. Em muốn hỏi là em có thể dùng kubernetes để dựng 2 pod thay thế cho 2 máy ảo EC2 có được không ạ? Em cảm ơn ạ.
@khalid_dinh
11 ай бұрын
Thực ra K8s pod nó khá tương đồng Docker container. Nên câu hỏi của e là thay thế EC2 instance bằng container thì k nên. Mục đích 2 cái này khác nhau. Container thì chủ yếu dành cho việc chứa, chạy app; còn EC2 instance thì nó tương tự như server rồi. Setup môi trường thì phải dựng server (hoặc VM) chứ k dùng container nhé
@hongsangpham531
11 ай бұрын
@@khalid_dinh Dạ vâng, em cảm ơn ạ. Chờ video tiếp theo của anh ạ :333
Em mới tìm hiểu về AWS thì để tạo instance thì không nên sử dụng account root, làm sao để mình setup IAM cho hợp lý vậy ạ
@khalid_dinh
11 ай бұрын
cái này chắc phải có video riêng chứ khá là dài. Nhìn chung là account root AWS không nên dùng thường xuyên, chỉ dùng nó để tạo, phân quyền account khác thôi. Các normal account kia thì nên tạo thành các group, dùng dịch vụ nào thì gán dịch vụ đó, k thừa, k thiếu.
Em thấy có đoạn config ansible, anh viết config này ở đâu vậy ạ! Chỗ ansible này anh nói nhanh nên em chưa hiểu. Rất mong anh giải đáp. Thanks anh!
@khalid_dinh
7 ай бұрын
e vào link docs a để bên dưới mô tả nhé. Ở phần QA/Staging có config của Ansible đó
Anh ơi, đang ssh vào server, làm sao mình unlock jenkins bằng command line ạ. Em cảm ơn a ^^
@khalid_dinh
11 ай бұрын
Trong video a có dùng lệnh để lấy ra token đấy
Nếu em tắt máy ảo đi khi không cần dùng tới thì nó có dừng việc tính tiền cho instance đó không anh nhỉ
@khalid_dinh
10 ай бұрын
tắt máy thì k tính tiền nữa nhé
Mn ơi cho mình hỏi là nếu làm đc và hiểu hết những cái công cụ anh ý nói thì đi xin việc được chưa ạ
@khalid_dinh
7 ай бұрын
Nếu e thành thạo Linux, Jenkins, Docker, Ansible, AWS cơ bản, thì có thể apply đc rồi. Nhưng chỉ Junior thôi
Trong video mình thấy là : docker container run --name khalid-jenkins -d -p 8080:8080 Còn trong docs thì : docker container run --name khalid-jenkins -d -p 8081:8080 vậy có ảnh hưởng gì ko bạn
@khalid_dinh
5 ай бұрын
khi chạy browser thì sử dụng port 8081 nhé. VD localhost:8081
@VuKhacDiep084
5 ай бұрын
Chào bạn. Cám ơn bạn đã dành thời gian reply mình. Mình đã chạy Pipeline và thành công rồi sau 2 nhiều lần xử lý lỗi từng stage. Chắc Jenkins có gì đó update yêu phải chỉnh sửa lại code thì mới cho chạy như phần: ---------------------------------------------------------------------------------------------------------------------------------------------------------- sh "docker run --name khalid-mysql --rm --network dev -v khalid-mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_LOGIN_PSW} -e MYSQL_DATABASE=db_example -d mysql:8.0 " ==> nó báo là ko an toàn về bảo mật phải chuyển về: sh """ docker run --name khalid-mysql --rm --network dev -v khalid-mysql-data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD='${MYSQL_ROOT_LOGIN_PSW}' -e MYSQL_DATABASE=db_example -d mysql:8.0 """ Nhưng nói chung là ngồi mò cũng thú vị, mình ko phải dân dev, đang làm comtor ở 1 cty Outsource. Thank bạn đã chia sẻ.
Bạn ơi mình đã tới bước ở phút 13:45 (Deploy app to DEV). Mình tạo 1 Repo khác trên git của mình và clone source code bạn về. Lúc mình cũng làm y như bạn add source code, 1p ở phần Periodically. Nhưng khi chạy xong thì phần đầu tiên chữ S (Status of the last build) màu đỏ báo failed. Mình ko biết là bị gì nữa. Check Docker ps thì ko thấy Msql dc thêm vào :( Xin chỉ vơi ạ
@khalid_dinh
5 ай бұрын
inbox riêng gửi mình log của nó nhé
Wow lương hàng mấy trăm củ mà vẫn share free cho anh em🎉
Cho minh xin Image docker Ansible duoc k?
@khalid_dinh
11 ай бұрын
mình public trên Dockerhub rồi, bạn cứ pull về thôi
E mới học lập trình nhiều chỗ vẫn chưa hiểu lắm. E có 1 cái web spring boot thymeleaf deploy lên railway qua github, mỗi lần e commit lên github lại thấy railway nó build lại image docker cũng tương tự như mình cài đặt cicd trog video phải ko ạ
@khalid_dinh
11 ай бұрын
ừm, cũng là 1 solution, nhưng thường chỉ dành cho app nhỏ, kiểu side project mà không muốn mất thời gian setup CI/CD thôi
@thangtruong7274
11 ай бұрын
@@khalid_dinh cảm ơn anh😁❤️
sắp có khóa học chưa anh
@khalid_dinh
11 ай бұрын
sắp rồi nhé
@huynhducle9164
11 ай бұрын
@@khalid_dinh video khóa học a nói chậm một chứt xíu nữa là perfect ạ :3
Không biết anh có để ý không nhưng mà đầu anh bị nghiêng á anh ơi, e coi video nào cũng thấy nghiêng mà mãi không thấy anh chỉnh lại cho thẳng
@khalid_dinh
11 ай бұрын
:)))
@bendzbodoi
11 ай бұрын
khó tính thật đấy. ông bị ocd hử
em đang thắc mắc xíu, sao phải dùng linux ạ, macOs hay win không thực hiện được ạ
@khalid_dinh
10 ай бұрын
Windows làm được nhưng k phải là best option. MacOS cũng khá tương đồng với Linux nên có thể chạy đc
@hoangngo7765
10 ай бұрын
@@khalid_dinh oki anh, videos rất chi tiết và hữu ích ạ
14:26 a ơi đoạn này e chạy thì bị lỗi ở đoạn Build maven, check log thì bị lỗi như này: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.11.0:compile (default-compile) on project khalid-spring: Fatal error compiling: error: release version 17 not supported Giờ e phải fix ntn hả a ?
@khalid_dinh
10 ай бұрын
E có dùng đúng version Jenkins như trong bài lab k
@BDCCN-NguyenTrungHieu
10 ай бұрын
em có kiểm tra thì của e là 2.4.17 còn trong bài lab là 2.4.14, vậy là mình phải đổi lại pb giống như ver của bài lab ạ ?@@khalid_dinh
@khalid_dinh
10 ай бұрын
@@BDCCN-NguyenTrungHieu ừm
@BDCCN-NguyenTrungHieu
10 ай бұрын
@@khalid_dinh e có đổi lại ver rồi ạ, nhưng có vẻ như lỗi vẫn thế @@ giờ phải làm sao ạ ?
@khalid_dinh
10 ай бұрын
@@BDCCN-NguyenTrungHieu vào messenger trao đổi nhé