8

【运维系列】整合docker镜像打包

 4 years ago
source link: https://spring.hhui.top/spring-blog/2021/03/04/210304-SpringBoot%E7%B3%BB%E5%88%97%E6%95%B4%E5%90%88docker%E9%95%9C%E5%83%8F%E6%89%93%E5%8C%85/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
logo.jpg

【运维系列】整合docker镜像打包

SpringBoot项目整合docker,打包镜像工程演示

I. 整合步骤

1. 基本环境

本项目借助SpringBoot 2.2.1.RELEASE + maven 3.5.3 + IDEA + MAC进行开发

首先确保本机有安装docker,对于docker基本知识点,可以参考

2. pom配置

创建一个基本的SpringBoot项目之后,关键是设置pom.xml文件,我们主要借助docker-maven-plugin来打镜像包

一个可用的配置如下

<artifactId>400-docker-demo</artifactId>

<properties>
<docker.prefix>springboot</docker.prefix>
</properties>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<mainClass>com.git.hui.boot.docker.Application</mainClass>
</configuration>
</plugin>

<!--加入maven插件 docker-maven-plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<!--镜像仓库源-->
<imageName>${docker.prefix}/${project.artifactId}</imageName>
<!--docker配置文件的路径-->
<dockerDirectory>./</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>

3. Dockerfile 文件

接下需要配置我们自己的dockerfile文件,在项目根目录下,新建文件名Dockerfile,如果路径有修改,需要调整上面pom配置中的dockerDirectory参数

FROM openjdk:8-jdk-alpine as builder
MAINTAINER yihui

# 创建工作目录
RUN mkdir -p /home/yihui/workspace/app
# 将jar拷贝过去
COPY /target/400-docker-demo-0.0.1-SNAPSHOT.jar /home/yihui/workspace/app/app.jar
# 将我们预期的文件拷贝过去
COPY /readme.md /home/yihui/workspace/app/readme.md
# 指定工作目录
WORKDIR /home/yihui/workspace/app
# 运行jar
ENTRYPOINT ["java", "-jar", "app.jar"]

关于dockerfile语法,可以参考

我们上面的case,就是拉一个jdk8的运行环境,将打的jar包重命名为app.jar到指定目录,同时使用命令java -jar app.jar来启动应用

4. 测试demo

提供一个最基础的demo实例

@SpringBootApplication
@RestController
public class Application {

@GetMapping(path = {"", "/"})
public String hello() {
return "hello " + UUID.randomUUID();
}

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

打包命令 mvn clean package docker:build -DskipTests=true

注意

  • 打包的前提是docker已经启动了

打包成功之后,可以看到会多一个docker镜像

docker images

运行镜像并测试

# 运行
docker run -i -d --name ddemo -p 8080:8080 -t springboot/400-docker-demo
# 测试
curl 'http://127.0.0.1:8080'

II. 其他

1. 一灰灰Blog

尽信书则不如,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激

下面一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛

一灰灰blog

打赏 如果觉得我的文章对您有帮助,请随意打赏。

分享到


Recommend

  • 17

    时间序列预测库 prophet R版本 docker镜像打包

  • 5

    作者 | fanux.中弈什么是集群镜像顾名思义和操作系统.iso镜像或者Docker镜像类似,集群镜像是用一定的技术手段把整个集群的所有文件以一定格式打成的一个资源包。对比单机和集群会发现一些有趣现象:...

  • 10

    前提条件: 1、docker服务器已开启远程访问,参考《远程docker服务器携带证书连接》。 2、服务器上已经搭建好k8s集群,本文是k8s单点集群用于测...

  • 7

    将 ASP.Net Core WebApi 应用打包至 Docker 镜像 运行环境为 Windows 10 专业版 21H1, Docker Desktop 3.6.0(67351),Docker Engine 20.10.8 1. ASP.Net Core Runtime 还是 .Net Core Runtime 在这里首先要区分一下 SDK...

  • 16
    • codeyang.pages.dev 3 years ago
    • Cache

    自己打包Docker镜像并部署Vue项目

    一只会敲代码的Sheep自己打包Docker镜像并部署Vue项目发表于2021-12-25|更新于2021-12-25|Docker,Vue字数总计:2...

  • 9

    一、基本概念   如果我们想要让软件运行起来,首先要保证操作系统的设置,其次还需要依赖各种组件和库的正确安装。那么虚拟机就是一种带环境安装的一种解决方案,它可以实现在一种操作系统里面运行另外一种操作系统,但是虚拟机的缺点也是十分明显的...

  • 18

    在过去的几年中,"云"作为明星热词站在了各种新潮技术之中,你可能使用过,但说不清它的原理;或者是没用过,但听过它的大名;也可能连它的名字都没听过,但你对这只蓝色鲸鱼一定十分眼熟。作为一名技术人员,只要你在这个软件行业里摸爬滚打,就一定对他有不同...

  • 10

    Jenkins作为CI、CD的先驱者,虽然现在的风头没有Gitlab强了,但是还是老当益壮,很多中小公司还是使用比较广泛的。最近小编经历了一次Jenkins发包,感觉还不错,所以自己学习了一下。网上比较多的教程都是在Linux上搭建Jenkins,小编经过一个星期的探索终于完成了在d...

  • 10

    个人比较喜欢影视作品,下载了大量的剧集视频,有些文件的命名不规范,就需要重新命名,之前是用的一款 renamer 客户端软件,用起来不太爽就自己做了个 bs 架构的重命名软件并开源在 github:open-...

  • 7

    BI系统打包Docker镜像及部署的技术难度和实现 随着容器化技术盛行,Docker在前端领域也有着越来越广泛的应用;传统的前端部署方式需要我们将项目打包生成一系列的静态文件,然后上传到服务器,配置nginx文件;如果我们使用容器化部署,将部...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK