IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 如何将Spring Boot应用打包成Docker镜像文件并且推送到阿里云仓库 -> 正文阅读

[系统运维]如何将Spring Boot应用打包成Docker镜像文件并且推送到阿里云仓库

关于Docker

前言

Docker 已经成为新一代的云计算技术,而且可以看到他们的发展态势非常迅猛。Docker作为一门杀手级应用,它的特点有:

  • Docker 容易上手。
  • Docker 解决了运维中的环境问题以及服务调度的痛点。
  • Docker 的生态圈中有大公司在后面助力,比如 Google。
  • Docker 产出了工业界标准 OCI。
  • Docker 的社区和生态圈已经出现像 Java 和 Linux 那样的态势。

在实际的应用场景中,我们会把自己的Spring Boot应用程序使用Docker部署到类似于阿里云这种云原生平台上。今天,就让我们来学习一下如何将Spring Boot应用打包成Docker镜像文件。

什么是Docker镜像

  • 镜像是静态的只读模板
  • 镜像中包含构建 Docker 容器?的指令
  • 镜像是分层的
  • 通过 Dockerfile 来创建镜像

Dockerfile的一些常用指令

Dokerfile的一些常用指令
这里需要注意的是,RUN时是运行安装时会执行的命令,也就是用于指定 docker build 过程中要运行的命令。CMD 和 ENTRYPOINT 会在docker run 时运行。

  1. 在Dockerfile中,只能有一个ENTRYPOINT指令,如果有多个ENTRYPOINT指令则以最后一个为准。

  2. 在Dockerfile中,只能有一个CMD指令,如果有多个CMD指令则以最后一个为准。

  3. 在Dockerfile中,ENTRYPOINT指令或CMD指令,至少必有其一。

通过Maven构建 Docker镜像

准备?作

1.提供一个 Dockerfile

FROM java:8
MAINTAINER fwt "HunterQiu"
EXPOSE 80
# 设置时区
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
ARG JAR_FILE
ADD target/${JAR_FILE} /workspace/myshop.jar
WORKDIR /workspace
ENTRYPOINT ["java","-jar","myshop.jar"]

之前在查看日志发现阿里云ECM服务器和自己打包的Docker容器两者之间的时间相差了八个小时!
宿主机采用了CST时区,CST应该是指(China Shanghai Time,东八区时间)
容器采用了UTC时区,UTC应该是指(Coordinated Universal Time,标准时间)
所以在Docker Build的阶段就把时区改正过来。

Dockerfile放在项目的根目录,如下:
Dockerfile位置

2.配置 dockerfile-maven-plugin 插件

<plugin>
                <groupId>com.spotify</groupId>
                <artifactId>dockerfile-maven-plugin</artifactId>
                <version>${dockerfile-maven-version}</version>
                <executions>
                    <execution>
                        <id>default</id>
                        <goals>
                            <goal>build</goal>
                            <goal>push</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <repository>${docker.image.prefix}/${project.artifactId}</repository>
                    <tag>${project.version}</tag>
                    <buildArgs>
                        <JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
                    </buildArgs>
                </configuration>
            </plugin>

执行构建

  1. mvn package
  2. mvn dockerfile:build
[root@hunteraliyun shop]# ll
total 44
-rw-r--r-- 1 root root   265 Jul 15 00:52 Dockerfile
drwxr-xr-x 2 root root  4096 Jul 12 01:27 logs
-rw-r--r-- 1 root root 10070 Jun 30 17:44 mvnw
-rw-r--r-- 1 root root  6608 Jun 30 17:44 mvnw.cmd
-rw-r--r-- 1 root root  6515 Jul 15 00:52 pom.xml
drwxr-xr-x 4 root root  4096 Jun 30 17:44 src
drwxr-xr-x 9 root root  4096 Jul 12 01:27 target
[root@hunteraliyun shop]# mvn clean package -Dmaven.test.skip=true

看到build成功的信息:

[INFO] Successfully built 44002908890c
[INFO] Successfully tagged myshop/justice-league-shopping:0.0.3-SNAPSHOT
[INFO] 
[INFO] Detected build of image with id 44002908890c
[INFO] Building jar: /home/hunter/projects/shop/target/justice-league-shopping-0.0.3-SNAPSHOT-docker-info.jar
[INFO] Successfully built myshop/justice-league-shopping:0.0.3-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  26.243 s
[INFO] Finished at: 2021-07-15T01:16:54+08:00
[INFO] ------------------------------------------------------------------------

检查结果
检查docker镜像是否已经创建:

[root@hunteraliyun shop]# docker images
REPOSITORY                                                    TAG              IMAGE ID       CREATED         SIZE
myshop/justice-league-shopping                                0.0.3-SNAPSHOT   44002908890c   3 minutes ago   692MB

将镜像推送到阿里云Registry

$ docker login --username=hunter registry.cn-shenzhen.aliyuncs.com
$ docker tag [ImageId] registry.cn-shenzhen.aliyuncs.com/hunter_qiu/docker-factory:[镜像版本号]
$ docker push registry.cn-shenzhen.aliyuncs.com/hunter_qiu/docker-factory:[镜像版本号]

镜像被推送到阿里云的私有docker仓库,镜像名字会有要求,镜像名字应为[服务器域名]/[命名空间]/[仓库名称]:[镜像版本号]。因此需要用tag去改镜像名称, 如果名字不符合格式规范,推送会报错。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-07-16 11:42:51  更:2021-07-16 11:43:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 16:42:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码