Step 1: Clone Source Code

Mở terminal hoặc command prompt và chuyển đến thư mục mà bạn muốn lưu trữ dự án. Sau đó coppy lệnh bên dưới và dán vào

shell
 https://github.com/HongThinhThinh/seminar-springboot

Step 2: Setup môi trường cho dự án bằng DOCKER

Để một dự án BackEnd có thể chạy thì đầu tiên phải setup database cho dự án
Ở đây anh đang dùng database MYSQL nên sẽ chạy câu lệnh này để kéo images của MYSQL về mà không cần set up bất cứ thứ gì

shell
docker pull mysql:latest

Sau khi pull xong các bạn có thể check đã thành công hay chưa bằng lệnh:

shell
docker images

Step 3: Chạy image MYSQL để khởi tạo container

shell
docker run -e MYSQL_ROOT_PASSWORD=<your_password> -p 3306:3306 -d --name mysql_container mysql:latest
  • docker run: Lệnh để chạy một container mới từ image.
  • -e MYSQL_ROOT_PASSWORD="your_password": Thiết lập biến môi trường MYSQL_ROOT_PASSWORD với mật khẩu cho tài khoản root của MySQL.
  • -p 3306:3306: Mở cổng 3306 (mặc định của MySQL) trên máy chủ và ánh xạ nó với cổng 3306 của container.
  • --name mysql_container: Đặt tên cho container là mysql_container.

Step 4: Access and Create a Database in MySQL Workbench

Sau khi chạy lệnh ở trên đồng nghĩa bạn đã set up đầy đủ môi trường MYSQL chỉ duy nhất 1 dòng lệnh và bạn hoàn toàn có thể truy cập trực tiếp vào database đó thông qua MySQL Workbench với config này:

  • Connection Name : Tên connection để vào database (Đặt gì cũng được)
  • Hostname localhost
  • Port: 3306 (Tùy theo port đã ánh xạ khi run container ở bước trên )
  • Password: Password đã config khi run container ở bước trên

Sau khi đã đăng nhập vào MySQL Workbench, bạn có thể tạo database mới với tên "your_database_name" và tạo bảng "your_table_name" với cấu trúc tương ứng với cấu trúc của bảng trong dự án của bạn.

Step 5: Push lên dockerHub để FrontEnd có thể pull xuống và sử dụng

Và để push lên docker hub thì bạn cần đăng nhập vào DockerHub

shell
docker login

Để push được lên docker hub bạn cần build dự án mình thành 1 cái image và gắn tag cho nó

shell
docker build -t your-image-name .

Sau khi đã build thành image thì cần gắn tag cho image đó

shell
docker tag myapp:latest yourusername/myapp:v1.0
  • docker tag: Lệnh để gán một thẻ (tag) mới cho image Docker, giúp phân biệt các phiên bản khác nhau của cùng một image.
  • myapp:latest: Tên image hiện tại trên máy là myapp với tag latest, thường đại diện cho phiên bản mới nhất.
  • yourusername/myapp:v1.0: Tên và tag mới cho image.
    • yourusername: Tên tài khoản Docker Hub của bạn.
    • myapp: Tên image lưu trên Docker Hub.
    • v1.0: Tag giúp phân biệt phiên bản.

Chạy lại lệnh này để check đã build thành công hay chưa

shell
docker images

Sau đó để đẩy nó lên docker hub bạn cần

shell
docker push hongthinh234/myapp:v1.0

  • docker push: Lệnh để đẩy (upload) một image Docker từ máy lên Docker Hub.
  • yourusername/myapp:latest: Tên image và tag được đẩy lên Docker Hub.
    • yourusername: Tên tài khoản Docker Hub của bạn.
    • myapp: Tên của image trên Docker Hub.
    • latest: Tag của phiên bản image, thường là phiên bản mới nhất.

Step 6: Đưa cho Front End File Docker Compose

shell
version: '3'
services:
  mysql_container:
    image: mysql:latest
    container_name: mysql_db_container  # Tên của container MySQL
    environment:
      MYSQL_ROOT_PASSWORD: SWP@123456
    ports:
      - "3307:3306"

  app:
    image: hongthinh234/test:v1.0
    container_name: springboot_container  # Tên của container ứng dụng
    environment:
      MYSQL_URL: "jdbc:mysql://mysql_container:3306/demo_seminar"
      MYSQL_USER: "root"
      MYSQL_PASSWORD: "SWP@123456"
    depends_on:
      - mysql_container
    ports:
      - "8080:8080"

File Docker Compose này thiết lập hai dịch vụ: mysql_containerapp.

  • mysql_container: Tạo container MySQL:

    • image: Sử dụng mysql:latest.
    • environment: Đặt mật khẩu root là SWP@123456.
    • ports: Mở cổng 3306 của container trên cổng 3307 của máy chủ.
  • app: Tạo container ứng dụng:

    • image: Sử dụng hongthinh234/test:v1.0.
    • environment: Đặt các biến môi trường kết nối MySQL (URL, user, password).
    • depends_on: Đảm bảo MySQL khởi chạy trước.
    • ports: Mở cổng 8080 trên cả container và máy chủ.
Lưu ý: nhớ connect thử db docker và tạo ra database tương ứng với docker-compose (trường hợp này là demo_seminar)

Lệnh chạy docker compose

shell
docker compose up