系列文章:
容器 & 服务:开篇,压力与资源
容器 & 服务:Jenkins 本地及 docker 安装部署
容器 & 服务:Jenkins 构建实例
一 概述
系列文章的前面几篇,介绍了一些基础概念和 Jenkins 的 docker 部署、构建实例,本篇将开始做第一个 demo 应用,使用 idea 的 docker 插件对 Java 应用执行构建、发布。
二 环境依赖
2.1 操作系统
本地开发环境是 macos 系统,信息为:
Darwin bogon 18.6.0 Darwin Kernel Version 18.6.0: Thu Apr 25 23:16:27 PDT 2019; root:xnu-4903.261.4~2/RELEASE_X86_64 x86_64
复制代码
2.2 开发工具
IntelliJ IDEA,我使用的版本是 Ultimate Edition 2018.3 版本。
2.3 JDK
本地使用的是 1.8.0_212
java version "1.8.0_212"
Java(TM) SE Runtime Environment (build 1.8.0_212-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)
复制代码
2.4 Docker
示例使用的是本地 docker,安装了 docker 的 mac 版。版本信息:
三 准备工作
3.1 IDEA 安装 Docker 插件
当前版本的 Idea 插件安装,是在 Intellij Idea->Preference,在 Plugins 右边,选择 Marketplace,在搜索框搜索 docker 并点击 install,等待安装完成,重启 idea 即可。
3.2 工程代码
为了快速开发,示例选择使用 SpringBoot 单体应用,示例代码地址:git@github.com:flamingstar/dockerdemo.git
代码核心是一个 DockerDemoApplication.java,启动 SpringBootApplication 并暴露一个 index 接口:
package com.flamingstar.docker;
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 DockerDemoApplication {
public static void main(String[] args) {
SpringApplication.run(DockerDemoApplication.class, args);
}
@RequestMapping("/index")
public String index(){
return "Hello! This is your first docker demo";
}
}
复制代码
依赖配置文件 pom.xml:
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.7.RELEASE</version>
<relativePath/>
</parent>
<groupId>com.bolingcavalry</groupId>
<artifactId>dockerdemo</artifactId>
<version>1.0.0-SNAPSHOT</version>
<name>dockerdemo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</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>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
复制代码
四 docker 文件配置
如果是通常的本地启动,在 Edit Configurations 直接配置 Spring Boot 应用就可以了:
因为本文是要制作 Docker 镜像,并启动容器运行应用,所以需要创建 Dockerfile,并使用 docker 方式运行。
4.1 创建 Dockerfile
再描述一下 Dockerfile:Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
我们在工程根目录下创建 Dockerfile,内容如下(示例代码 git 中已经包含):
# Docker image for springboot application
# VERSION 1.0.0
# Author: flamingstar
### 基础镜像,使用alpine操作系统,openjkd版本8u201
FROM openjdk:8u201-jdk-alpine3.9
#作者
MAINTAINER flamingstar <xxx@qq.com>
#系统编码
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8
#声明一个挂载点,容器内此路径会对应宿主机的某个文件夹
VOLUME /tmp
#应用构建成功后的jar文件被复制到镜像内,指定名称为dockerdemo.jar
ADD target/dockerdemo-1.0.0-SNAPSHOT.jar dockerdemo.jar
#启动容器时的进程
ENTRYPOINT ["java","-jar","/dockerdemo.jar"]
#暴露8080端口
EXPOSE 8080
复制代码
4.2 配置 docker 启动
在 Edit Configurations 编辑 Run/Debug Configurations 时,添加一个 Docker 配置,需要配置的内容如下:
重点有上面标红的前 4 项内容:
1)指定 Dockerfile 位置;
2)镜像名称(Image tag),我们设置为 dockerdemoapplication;
3)容器名称(dockerdemoapplication),启动时的容器名称
4)设置绑定端口,这里包括两个端口,一个是我们访问这个应用的服务端口,还有一个是 docker 容器内暴露端口。
五 启动效果
如下图,我们点击上方的 demo 右边 run 箭头,就可以启动应用。
在左下方标红的是 docker 窗口,启动后我们可以看到包含的镜像和容器信息。从中可以找到我们当前应用创建的镜像,和启动的容器。
容器信息
镜像信息
浏览器中,我们输入: http://localhost:18080/index
可以查看到接口返回:
至此,第一个 docker 应用发布结束。
附录
docker 镜像查询,可以使用https://hub.docker.com/,例如在本示例的 Dockerfile,我们依赖 openjdk,那么使用的镜像在 docker hub 中搜索方式:
查看 Tags:
在下方列表中就可以找到所需的 tag 信息和对应的 docker pull 命令:
评论 (3 条评论)