October 22, 2021

Cách chuyển một ứng dụng hiện có vào Docker

Xin chào các bạn !

Trong bài viết này mình giới thiệu cách chuyển 1 ứng dụng hiện có như java viết bằng framework java Spring boot cùng với thư viện ActiveMQ message queue và MongDB làm 1 dự án nhỏ demo các bước như sau:

Bắt đầu bạn mở command line từ máy tính mình lên nhé

Bước 1: 

Bạn install mongDB vào máy tính của mình, cài docker vào máy tính và install java, framework java spring boot đảm bảo mọi thứ đã có trên máy tính của mình nhé.

Bước 2:

bạn có 2 cách cài đặc đưa dự án của mình vào Docker bằng dockerfile hoăc dùng Docker composing tôi sẽ trình bày từng bước như sau:

Cách 1: Dùng docker file:

Bước 2.1:

Bạn tạo file Dockerfile bỏ vào cùng source code project thư mục góc và tạo nội dung như hình sau tùy vào dự án java mà tạo cho đúng nhé:

lưu ý trong file pom.xml bạn lưu ý các dòng trong phần thẻ <plugins> bên dưới cho đúng:

Khi chạy nó sẽ dùng mvn install của maven build đầy đủ thư viện cần vào Docker image. Để build 1 docker image từ source trên thì dùng lệnh:

Với spring-boot-jms-tutorial là tên Docker image, dấu ” . ” sau cùng là chỉ định lệnh chạy dockerfile theo cùng.

Lưu ý trong projetc demo này tôi build ra file jar nhé các bạn trong cấu hình file pom.xml , nếu các bạn build theo file war thì làm tương tự.

Bây giờ chạy và tạo container từ docker image ở trên như sau:

Với application là tên container chạy port 4000 Nat tới port 8080 từ docker image.

Bước 2.2:

Tiếp đến giả sử bạn có 1 docker image về MongDB trên máy tính của mình bây giơ bạn tiến hành chạy nó tạo 1 container cho MongDB như sau:

Với mongocontainer là tên container chạy từ docker image mongo

Bước 2.3:

Tiếp đến giả sử bạn có docker image về ActiveMQ thì bây giờ bạn tiến hành chạy nó để tạo 1 container cho nó như sau:

Với activemqcontainer là tên container đang chạy trên docker image và với port là 8161

Bước 2.3:

Bạn đã có 3 container đã chạy nhưng hệ thống bạn chưa thể chạy được vì chưa thể kết nối qua MongDB và ActiveMQ vì chưa tạo network kết nối cho nó bạn tiến hành tiếp như sau:

Lệnh này tạo 1 network tên là network cho liên kết các container đang chạy lại với nhau chúng ta tiến hành chạy 1 lần các lệnh như sau:

bây giờ chúng đã gắn kết thông qua network và hệ thống project demo chạy ok liên kết các thành phần với nhau trên docker container cho phép vùng chứa ứng dụng kết nối với MongoDB và ActiveMQ trong các vùng chứa tương ứng của chúng

Cách 2: tôi sẽ trình bày theo docker-compose.yml như sau:

Cũng tương tự tạo các container chạy trên các docker image như trên nhưng tôi dùng docker-compose.yml cho dễ cấu hình:

Với hình trên tôi ánh xạ theo dạng 2 tương tự như cách 1 cũng có container, image và port tương ứng cho mõi servive đang dùng trong project phải kg ạ. vậy là chúng ta đã tạo xong file và bây giờ là chúng ta chạy lệnh sau để chạy conainer trên docker image và liên kết network các service lại với nhau như sau:

Bây giờ là hệ thống đã chạy và Cho phép vùng chứa ứng dụng kết nối với MongoDB và ActiveMQ trong các vùng chứa tương ứng của chúng

bạn cũng có thể dùng lệnh:

lệnh này sẽ tạo logs cho mõi service trên console ghi log lại quá trình chạy hệ thống.

Một vài lệnh để check hệ thống trên docker như sau:

Có thể xem tổng thể Image của project đang chạy dùng lệnh:

Bạn có thể xem thông tin cấu hình Network của project chạy trên container docker như sau:

************** hết**************

Pham Van Tuyen

Anh Tuyen Pham là Tổng giám đốc của Cloud Ace Việt Nam và là GDG Cloud HCM Chapter Lead. Anh là diễn giả quen thuộc tại các sự kiện do Google tổ chức tại Việt Nam như Kubernetes Vietnam, Google Cloud Next Extended. Anh đã có các chứng chỉ của Google Cloud như Google Cloud Architect và Data Engineer.

View all posts by Pham Van Tuyen →