post-image

Docker – Chạy một ứng dụng Spring Boot với Docker

Tổng quan

Docker là một công cụ được thiết kế để giúp tạo, triển khai và chạy các ứng dụng dễ dàng hơn bằng cách sử dụng các container. Các container cho phép lập trình viên đóng gói một ứng dụng với tất cả các phần cần thiết, chẳng hạn như thư viện, database…vv và gửi tất cả ra dưới dạng một gói.

1. Khái niệm cơ bản

  • Định nghĩa

Docker là một công cụ được thiết kế để giúp tạo, triển khai và chạy các ứng dụng dễ dàng hơn bằng cách sử dụng các container. Các container cho phép lập trình viên đóng gói một ứng dụng với tất cả các phần cần thiết, chẳng hạn như thư viện, database…vv và gửi tất cả ra dưới dạng một gói.

  • Các thành phần chính

– Engine : là thành phần chính, như một công cụ để đóng gói ứng dụng

– Hub : là dịch vụ cloud để chia sẻ ứng dụng và tự động hóa chuỗi các công việc liên tục, có thể thao tác pull/push với các images

  • Một số khái niệm

–Images : là một “read-only template”. Chẳng hạn, một image chứa hệ điều hành Ubuntu đã cài đặt sẵn Apache và ứng dụng web

– Registries : Là kho chứa images. Người dùng có thể tạo ra các images của mình và tải lên đây hoặc tải về các images được chia sẻ

– Container : hoạt động giống như một thư mục (directory), chứa tất cả những thứ cần thiết để một ứng dụng có thể chạy được. Mỗi một docker container được tạo ra từ một docker image. Các thao tác với một container : chạy, bật, dừng, di chuyển, và xóa

– Dockerfile : là một file chứa tập hợp các lệnh để Docker có thể đọc và thực hiện để đóng gói một image theo yêu cầu người dùng

– Orchestration : là các công cụ, dịch vụ dùng để điều phối và quản lý nhiều containers sao cho chúng làm việc hiệu quả nhất.

2: Cài đặt (Ubuntu 16.04)

Bước 1:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Bước 2:

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

Bước 3:

sudo apt-get update

Bước 4:

apt-cache policy docker-ce

Bước 5:

sudo apt-get install -y docker-ce

Kiểm tra xem đã hoạt động hay chưa, các bạn run lệnh sau:

sudo systemctl status docker

kết quả sẽ là :

Output
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2018-10-18 20:28:23 UTC; 35s ago
     Docs: https://docs.docker.com
 Main PID: 13412 (dockerd)
   CGroup: /system.slice/docker.service
           ├─13412 /usr/bin/dockerd -H fd://
           └─13421 docker-containerd --config /var/run/docker/containerd/containerd.toml

3: Cài đặt Compose (Cài trên Ubuntu 16.04)

Bước 1:

sudo curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

Bước 2:

sudo chmod +x /usr/local/bin/docker-compose

Kiểm tra version docker compose các bạn run lệnh sau:

docker-compose --version

kết quả sẽ là :

Output
docker-compose version 1.18.0, build 8dd22a9

4: Tạo và run một ứng dụng Spring boot với Docker

Đầu tiên các bạn clone source code Spring boot với lệnh git sau:

git clone https://github.com/spring-guides/gs-spring-boot-docker.git

sau đó cd vào thư mục gs-spring-boot-docker/initial

cd gs-spring-boot-docker/initial

sửa file Application.java

sudo nano src/main/java/hello/Application.java

copy đoạn code sau vào file Application.java

package hello;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class Application {

    @RequestMapping("/")
    public String home() {
        return "Hello Docker World";
    }

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

tạo mới một file Dockerfile

$ sudo nano Dockerfile

Set quyền cho file vừa tạo

sudo chmod -R 777 Dockerfile

sửa file Dockerfile và thêm vào đoạn code sau

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG DEPENDENCY=target/dependency
COPY ${DEPENDENCY}/BOOT-INF/lib /app/lib
COPY ${DEPENDENCY}/META-INF /app/META-INF
COPY ${DEPENDENCY}/BOOT-INF/classes /app
ENTRYPOINT ["java","-cp","app:app/lib/*","hello.Application"]

cuối cùng build và run project với lệnh sau:

./gradlew build && java -jar build/libs/gs-spring-boot-docker-0.1.0.jar

sử dụng trình duyệt truy cập vào http://localhost:8080/ bạn sẽ thấy message “Hello Docker World”.

Như vậy mình vừa giới thiệu sơ qua cho các bạn các khái niệm trên. Mong rằng bài viết sẽ giúp ích cho các bạn.

Bài viết có tham khảo tài liệu từ các nguồn:

https://viblo.asia/p/docker-la-gi-cai-dat-va-run-mot-ung-dung-spring-boot-voi-docker-djeZ1R28lWz

https://spring.io/guides/gs/spring-boot-docker/

https://opensource.com/resources/what-docker

Leave a Reply

Your email address will not be published. Required fields are marked *