Hi, I am

Ngô Tôn

I am a programmer.

Home / Programming / Web Development / Java / Build và Deploy website Angular và Spring Boot bằng Docker Compose

Build và Deploy website Angular và Spring Boot bằng Docker Compose

Chào mọi người, hôm nay Ngô Tôn .IT sẽ hướng dẫn các bạn cách Build và deploy website Angular và Spring Boot bằng Docker Compose.

Bài viết chỉ tập trung vào phần Docker Compose, còn Angular và Spring Boot sẽ hẹn các bạn vào các bài viết khác nhé.

Docker Compose là gì?

Nếu như các bạn có theo dõi bài trước đó là Build và Deploy ứng dụng Machine Learning với Docker thì các bạn cũng biết được Docker là gì. Vậy còn Docker Compose?

Docker Compose là một công cụ dùng để định nghĩa và chạy các chương trình Docker sử dụng nhiều container (multi-container). Chúng ta sử dụng một file YAML để thiết lập các service cần thiết cho chương trình. Và chỉ với một câu lệnh, chúng ta sẽ create và start tất cả service từ các thiết lập đó.

Việc sử dụng Docker Compose thường có 3 bước cơ bản sau:

  • Khai báo environment của ứng dụng với Dockerfile.
  • Khai báo các services cần thiết để chạy app trong docker-compose.yml.
  • Chạy lệnh docker-compose up để khởi động Compose và chạy app.

Lợi ích của Docker Compose

  • Tạo nhiều môi trường độc lập trên một máy chủ duy nhất
  • Bảo toàn dữ liệu khi các container được tạo
  • Chỉ tạo lại các container đã thay đổi
  • Điều chỉnh các biến giữa các môi trường

Cài đặt

Việc cài đặt Docker Compose rất đơn giản, các bạn chỉ cần tải Docker và Docker Compose theo hệ điều hành mình đang sử dụng về máy và tiến hành cài đặt thôi.

Build và deploy website Angular và Spring Boot bằng Docker Compose

Bây giờ đến nội dung chính của bài viết, sử dụng Docker Compose để build và deploy website với front-end là Angularback-end là Java Spring Boot.

Cấu trúc thư mục của dự án

Thư mục backend chứa mã nguồn của dự án sử dụng Java Spring Boot (Maven project) để tạo các REST API.

Thư mục frontend chứa mã nguồn của website được viết bằng Angular.

Tạo Dockerfile

File Dockerfile_be

Ở đây dự án mình dùng Maven và JDK 11 nên chúng ta sẽ dùng maven:3.6.0-jdk-11-slim  openjdk:11-jdk-slim để build phần back end.

File Dockerfile_fe

Phần front end chúng ta chạy Node 12 và expose port 4200.

Cấu hình Compose

File docker-compose-be.yml

Ở phần này, mình định nghĩa Compose dùng version 2.1. Mình tạo ra 2 service là banking-spring (Java Spring boot) và banking-postgres (Cơ sở dữ liệu PostgreSQL), còn service flyway (cái này các bạn không cần cũng được, do dự án mình có chạy migration DB).

  • banking-spring: mình tạo image từ Dockerfile_be và chạy back end port 8800.
  • banking-postgres: tạo image postgres:10.5-alpine từ Docker Hub, khai báo thông tin database và chạy port 5432

Tất cả service chạy cùng mạng là banking-network.

File docker-compose-fe.yml

Build và Deploy

Mở Terminal và chạy lệnh sau:

Giải thích thêm

Phần thiết lập của file Docker Compose mình có để khá nhiều thông tin, những thông tin này gần như đầy đủ cho 1 dự án thực tế hoàn chỉnh. Nếu dự án của các bạn không dùng tới thì phần thiết lập sẽ đơn giản hơn.

Các thông tin cơ bản như services, volumes, networks, build, image, ports, depends_on, healthcheck,… các bạn tìm hiểu thêm nhé.

Với những website không viết bằng Spring Boot hay Angular thì các bước làm vẫn tương tự, chỉ khác nhau về nền tảng hay phiên bản nên các bạn cũng đừng lo lắng việc đó.

Chúc các bạn thành công

About ngoton

Ngô Tôn is a programmer with passion for tailored software solutions. Comes with 7+ years of IT experience, to execute beautiful front-end experiences with secure and robust back-end solutions.

Check Also

Xóa các Object trùng lặp trong List Java

Khi làm việc với List trong Java, đôi lúc chúng ta cần tạo 1 List …

Leave a Reply

avatar
  Subscribe  
Notify of