vanishaloneJava技术资料

从零开始创建最简单的springboot工程,到docker部署

2021-09-01  本文已影响0人  微光2020

docker越来越流行,但之前pc和imac操作docker略显繁琐,而docker桌面端的发布让docker操作越来越简单,本文记录从0开始搭建一个最简单的springboot工程,直到通过打包上传到云服务器全过程。

概要

基本流程是:

创建springboot或spring cloud工程→打包成Jar→打包成dockerfile→上传镜像服务器(三方或自建)→云服务器拉取镜像服务器→运行镜像


基本流程.png

一,创建SpringBoot Web项目

1.1. 新建SpringBoot工程

使用默认名称Demo,一路next


创建新工程.png Spring官方快捷创建.png 选择Spring Web.png

1.2. 配置Maven

1.2.1 查看maven是否正确

第一个菜单→Preferences→搜索Maven→选择正确的配置文件地址和本地仓库地址


界面配置Maven.png

2.2 修改配置文件

打开setting.xml,找到mirrors添加镜像地址,修改配置文件为淘宝地址

<mirrors>
    <mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>central</mirrorOf>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>
  </mirrors>

1.3. 刷新工程

右侧打开maven管理页面,点击刷新

maven更新pom中jar包.png
如果pom.xml(根目录)中没有错误,则项目创建成功,如果出现红色标注的错误,则执行下面操作:

1.3.1 检查pom.xml错误

打开淘宝仓库地址查询artifactIdversion是否错误
淘宝maven仓库查询地址

查询举例,按实际需求查询.png

1.3.2 修改版本号

根据groupIdartifactId找到合适的版本号version,重填版本号,重新更新pom.xml文件直到无错

1.4. 项目结构

项目结构.png
说明
application.properties是项目默认创建的,application.yml文件需要手动创建
可以混合使用但不推荐,application.yml更方便易读,建议创建application.yml删除application.properties
# 启动端口,yaml文件书写时会有提示
server:
  port: 8080

配置文件中什么都不填写会默认启动8080端口

1.5. 添加控制器

添加控制器DemoController,让网站可以被访问

/** 创建一个rest风格都控制器 */
@RestController
public class DemoController {
    /** 通过get方式访问路径http://127.0.0.1:8080/index */
    @GetMapping("/index")
    public String index(){
        return "springboot index page";
    }
}

1.6. 测试网站

1.6.1 运行

DemoApplication中右键Run...

1.6.2 测试

打开浏览器访问127.0.0.1:8080/index,出现springboot index page表示成功


二,在本地docker中运行

2.1. 下载

下载docker Desktop for mac或者docker Desktop for windows
官网下载
docker由于历史原因有很多版本,各个版本适应不同环境,最新的是安装版,简单易用,不过对系统有要求,详细内容可以看看这遍博客:
Docker学习笔记(1)——理清概念

2.2. 安装

安装版的docker按照说明直接按照即可,mac需要升级到最新系统,Windows需要支持虚拟化


docker desktop界面.png

Containers / Apps - 当前容器,可以控制容器运行与停止

要有Container首先要有Image,也就是说Container是通过image创建的

images - 本地镜像

Docker镜像包括一个或者多个只读层(read-only layers),最多127层,相当于每个镜像都自带一个迷你操作系统,原来只是打包Jar,Docker是连同运行环境一起打包了,保证任何地方运行环境是一致的

Volumes - 数据持久化

Docker的数据持久化即使数据不随着container的结束而结束,数据存在于host机器上——要么存在于host的某个指定目录中(使用bind mount),要么使用docker自己管理的volume(/var/lib/docker/volumes下)

Dev Environments - 开发环境

还不成熟,意思是团队开始时互享镜像,原来需要上传到Git然后队友拉取代码,现在直接共享给队友

2.3. 编写dockerfile

FROM anapsix/alpine-java:8_server-jre_unlimited
MAINTAINER abc
ADD demoapp.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Dspring.profiles.active=online","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

2.4.打包成docker镜像

docker build -t demo-alpine:latest .

打开docker desktop软件,发现镜像已打包上去

docker desktop.png

2.5.运行镜像

docker run -d -p 8080:8080 --name demo-alpine demo-alpine:latest

打开浏览器访问127.0.0.1:8080/index,出现springboot index page,说明docker本地运行正确


三,上传至镜像库

3.1. 阿里云容器镜像服务

配置淘宝镜像(docker hub官网如果使用比较通畅,可以不配置

开通阿里云账号,按官网提示配置镜像加速
淘宝镜像服务

配置容器镜像加速.png

开通镜像仓库

1). 开通


开通镜像仓库.png

2). 登陆阿里云

docker login --username=您的登录名@qq.com registry.cn-chengdu.aliyuncs.com

3). 将镜像推送到阿里云Registry

docker tag [ImageId] registry.cn-chengdu.aliyuncs.com/cdsk/[命名空间]:[镜像版本号]
docker push registry.cn-chengdu.aliyuncs.com/cdsk/[命名空间]:[镜像版本号]

imac第一次上传时第一次输入开机密码,第二次输入访问凭证固定密码,pc未测试

登陆阿里云容器镜像服务,选择正确的地区后可以看见上传的镜像

3.2. docker hub容器镜像服务

3.3. harbor 自建容器镜像服务

三种方式都可以上传镜像,目的是被云服务器拉取镜像,从开发➡️镜像库➡️云服务器,最终目的是构建一个持续集成开发环境


四,云服务器中运行工程

docker pull registry.cn-chengdu.aliyuncs.com/cdsk/[命名空间]:[镜像版本号]
docker run -d -p 8080:8080 --name demo registry.cn-chengdu.aliyuncs.com/cdsk/[命名空间]:[镜像版本号]

五,总结

上一篇下一篇

猜你喜欢

热点阅读