Docker – Chạy một ứng dụng Spring Boot với Docker
NỘI DUNG BÀI VIẾT
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:
<pre class="wp-block-syntaxhighlighter-code">curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
</pre>
Code language: JavaScript (javascript)
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
COMMENTS: