Spring Boot - Tạo hình ảnh Docker
Docker là một dịch vụ quản lý vùng chứa giúp dễ dàng xây dựng và triển khai. Nếu bạn là người mới bắt đầu sử dụng Docker, bạn có thể tìm hiểu chi tiết tại liên kết này -https://www.tutorialspoint.com/docker/index.htm
Trong chương này, chúng ta sẽ xem Cách tạo hình ảnh Docker bằng cách sử dụng các phụ thuộc Maven và Gradle cho ứng dụng Spring Boot của bạn.
Tạo Dockerfile
Đầu tiên, hãy tạo một tệp với tên Dockerfile dưới các thư mục src/main/dockervới nội dung hiển thị bên dưới. Lưu ý rằng tệp này rất quan trọng để tạo hình ảnh Docker.
FROM java:8
VOLUME /tmp
ADD dockerapp-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
Maven
Đối với Maven, hãy thêm plugin Docker Maven vào tệp cấu hình bản dựng của bạn pom.xml
<properties>
<docker.image.prefix>spring-boot-tutorialspoint</docker.image.prefix>
</properties>
<build>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
Tệp pom.xml hoàn chỉnh được cung cấp bên dưới:
<?xml version = "1.0" encoding = "UTF-8"?>
<project xmlns = "http://maven.apache.org/POM/4.0.0"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.tutorialspoint</groupId>
<artifactId>dockerapp</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>dockerapp</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<docker.image.prefix>spring-boot-tutorialspoint</docker.image.prefix>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Bây giờ, bạn có thể chạy ứng dụng của mình bằng cách sử dụng lệnh Maven mvn package docker:build
Note - Bật trình nền Expose trên tcp://localhost:2375 không có TLS.
Sau khi xây dựng thành công, bạn có thể thấy đầu ra trên bảng điều khiển như hình dưới đây:
Bây giờ, hãy xem hình ảnh Docker bằng lệnh sử dụng hình ảnh docker và xem thông tin hình ảnh trên bảng điều khiển.
Gradle
Để tạo hình ảnh Docker bằng cách sử dụng cấu hình bản dựng Gradle, chúng ta cần thêm docker plugin và cần viết một nhiệm vụ buildDocker để tạo hình ảnh Docker.
Mã cho cấu hình Gradle Docker được đưa ra bên dưới.
buildscript {
.....
dependencies {
.....
classpath('se.transmode.gradle:gradle-docker:1.2')
}
}
group = 'spring-boot-tutorialspoint'
.....
apply plugin: 'docker'
task buildDocker(type: Docker, dependsOn: build) {
applicationName = jar.baseName
dockerfile = file('src/main/docker/Dockerfile')
doFirst {
copy {
from jar
into stageDir
}
}
}
Tệp build.gradle hoàn chỉnh được cung cấp bên dưới.
buildscript {
ext {
springBootVersion = '1.5.9.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
classpath('se.transmode.gradle:gradle-docker:1.2')
}
}
group = 'spring-boot-tutorialspoint'
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'docker'
group = 'com.tutorialspoint'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
task buildDocker(type: Docker, dependsOn: build) {
applicationName = jar.baseName
dockerfile = file('src/main/docker/Dockerfile')
doFirst {
copy {
from jar
into stageDir
}
}
}
Bây giờ, hãy tạo một hình ảnh Docker bằng cách sử dụng lệnh hiển thị bên dưới:
gradle build buildDocker
Sau khi thực hiện lệnh, bạn có thể thấy nhật ký XÂY DỰNG THÀNH CÔNG trên cửa sổ giao diện điều khiển.
Bây giờ, hãy xem các hình ảnh Docker bằng lệnh sử dụng docker images và xem thông tin của hình ảnh trên bảng điều khiển.