实战篇 - 镜像打包
如果你是一个JAVA开发人员,需要把spring项目部署到minikube中,该怎么操作是一个需要探索的问题,这篇文章会讲解如何打包部署项目
1、生成demo项目
在浏览器端输入https://start.spring.io/,进入Spring start页面
- 1 选择spring boot相关版本 - 2.7.2
- 2 选择jdk版本 - 8
- 3 引入spring-web
- 4 编辑group等信息
点击generate会生成一个spring boot demo项目。
2、编写java代码
package com.docker.demo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloContoller {
@GetMapping("hello")
public String helloworld(){
return "hello world!";
}
}
编写完之后运行DemoApplication,查看是否运行成功。
3、编写dockerfile文件
# 从镜像仓库拉取jdk8
FROM openjdk:8-jdk-alpine
# 定义参数JAR_FILE
ARG JAR_FILE=target/*.jar
# 复制jar文件并改名为app.jar
COPY ${JAR_FILE} app.jar
# 执行 java -jar /app.jar 运行jar包
ENTRYPOINT ["java","-jar","/app.jar"]
dockerfile文件直接放入demo根目录下,如下:
4、执行打包操作:
PS D:\minikube\source_data\docker-demo> docker build -t halo26812/docker-demo:0.0.1 .
[+] Building 2.5s (7/7) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 31B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/openjdk:8-jdk-alpine 2.3s
=> [internal] load build context 0.0s
=> => transferring context: 80B 0.0s
=> [1/2] FROM docker.io/library/openjdk:8-jdk-alpine@sha256:94792824df2df33402f201713f932b58cb9de94a0cd524164a0f2283343547b3 0.0s
=> CACHED [2/2] COPY target/*.jar app.jar 0.0s
=> exporting to image 0.0s
=> => exporting layers 0.0s
=> => writing image sha256:911e7fe272127e86d33f4a22a8a1bb61d7036362330b1c46d886fc6cb891fae4 0.0s
=> => naming to docker.io/halo26812/docker-demo:0.0.
进入文件夹docker-demo 下,执行docker build -t halo26812/docker-demo:0.0.1 . 会在docker 下生成images。docker build .是生成镜像文件,-t halo26812/docker-demo:0.0.1是生成tag及版本信息。
--tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
5、查看镜像是否build成功
PS D:\minikube\source_data\docker-demo> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
halo26812/docker-demo 0.0.1 911e7fe27212 12 minutes ago 122MB
执行docker images,查询镜像信息,会显示REPOSITORY,tag,imageId等信息,其中tag和REPOSITORY就是在docker build中输入的信息
6、在docker上面运行
PS D:\minikube\source_data\docker-demo> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2d41557008bc kicbase/stable:v0.0.28 "/usr/local/bin/entr…" 2 days ago Up 2 days 127.0.0.1:58802->22/tcp, 127.0.0.1:58803->2376/tcp, 127.0.0.1:58805->5000/tcp, 127.0.0.1:58806->8443/tcp, 127.0.0.1:58804->32443/tcp minikube
PS D:\minikube\source_data\docker-demo> docker run -dp 3000:8080 halo26812/docker-demo:0.0.1
c36221350c7fca1c853e55a8297e57bd2f741e2b8e9eb6ba4168de968b01c8db
执行docker run之后,docker-demo服务就可以在本地运行了。
7、docker run执行参数描述
8、在浏览器访问http://127.0.0.1:3000/hello查看是否执行成功
上面显示hello world!说明部署成功了。之后我们需要打包到镜像容器中,在minikube中进行部署操作。