文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何使用Docker部署Spring Boot开源

2023-06-19 10:17

关注

这篇文章给大家介绍如何使用Docker部署Spring Boot开源,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

云收藏项目已经开源2年多了,作为当初刚开始学习 Spring Boot 的练手项目,使用了很多当时很新的技术,现在看来其实很多新技术是没有必要使用的,但做为学习案例来讲确实是一个绝佳的 Spring Boot 实践。

从开源到现在,写了一些教程给大家介绍如何部署云收藏,如何在IDE中运行云收藏,但是仍然有很多的朋友不知道如何使用,如何部署?就像“请提供一份云收藏数据结构” 这样的问题我至少都回答了一百多次,并且在 github 关闭了近十个类似的问题。

这也从另外一个方面可以看出,部署云收藏项目对一些朋友还是比较复杂,现在有了 Docker 我们就可以愉快的解决这个问题,只需三步就可以部署云收藏项目,打造专属个人的收藏系统。

云收藏

一些朋友可能还不了解云收藏,给大家简单介绍一下:

云收藏是一个使用 Spring Boot 构建的开源网站,可以让用户在线随时随地收藏的一个网站,在网站上分类整理收藏的网站或者文章,可以作为稍后阅读的一个临时存放。作为一个开放开源的软件,可以让用户从浏览器将收藏夹内容导入到云收藏,也支持随时将云收藏收集的文章导出去做备份。

产品主页

http://favorites.ren

项目主页

https://github.com/cloudfavorites/favorites-web

核心功能点:

项目使用技术:

Redis 后期去掉是由于服务器资源有限和部署麻烦

项目改造

依赖环境

准备一台系统为 Centos 7 以上的服务器,系统需要安装 Docker 和 Docker Compos 环境,安装方法可以参考前面两篇文章:

Docker 化改造

项目改造后的项目机构图

这里主要描述新增内容。

docker-compose.yaml 文件

我们首先来看一下docker-compose.yaml文件:

version: '3'services:  nginx:   container_name: favorites-nginx   image: nginx:1.13   restart: always   ports:   - 80:80   - 443:443   volumes:     - ./nginx/conf.d:/etc/nginx/conf.d     - /tmp/logs:/var/log/nginx           mysql:   build: ./mysql   environment:     MYSQL_DATABASE: favorites     MYSQL_ROOT_PASSWORD: root     MYSQL_ROOT_HOST: '%'     TZ: Asia/Shanghai   ports:   - "3306:3306"   volumes:     - ./mysql_data:/var/lib/mysql   restart: always        app:    restart: always    build: ./app    working_dir: /app    volumes:      - ./app:/app      - ~/.m2:/root/.m2      - /tmp/logs:/usr/local/logs    expose:      - "8080"    command: mvn clean spring-boot:run -Drun.profiles=docker    depends_on:      - nginx      - mysql

相对上一篇内容本次的docker-compose.yaml文件主要新增了两部分的内容:

docker-compose.yaml文件中,日志部分:

version: '3'services:  nginx:   volumes:     - /tmp/logs:/var/log/nginx  app:   volumes:     - /tmp/logs:/usr/local/logs

分别将 Nginx 和云收藏项目日志映射到宿主机的/tmp/logs,方便我们查看项目日志。

定制 mysql 初始化信息

docker-compose.yaml文件中,Mysql 变化内容:

version: '3'services:  mysql:   build: ./mysql   environment:     TZ: Asia/Shanghai   volumes:     - ./mysql_data:/var/lib/mysql

我将有变化的内容都摘了出来,mysql 新增了 TZ 环境变量将时区指向上海,另外我们将 Mysql 镜像内容提出来,放到项目的 mysql 目录下单独构建。mysql 目录下有两个文件,一个是 Dockerfile 定义 Mysql 镜像,一个是 my.cnf 文件定义 Mysql 编码等信息。

my.cnf 文件内容

#省略一部分...character_set_server=utf8character_set_filesystem=utf8collation-server=utf8_general_ciinit-connect='SET NAMES utf8'init_connect='SET collation_connection = utf8_general_ci'skip-character-set-client-handshake

此文件主要的作用是让 Mysql 支持 UTF-8.

Dockerfile 文件内容

FROM mysql/mysql-server:5.7COPY my.cnf /etc/my.cnf

使用 Mysql5.7 版本,并且将同目录下的 my.cnf 拷贝到服务器/etc/my.cnf

这样 Mysql 的相关信息就定义好了。

其它

其它内容变化不大,nginx 目录下存放着 Nginx 的配置文件,项目新增application-docker.properties文件,将数据库连接部分修改即可。

改造完成之后,我们只需要将项目拷贝到部署服务器然后执行:docker-compose up就可以启动。

部署

我已经将项目的改造内容提交到 github 上面,这样大家部署的时候仅需要三步,即可成功部署云收藏项目。

下载源码解压

下载最新发布版本

wget https://github.com/cloudfavorites/favorites-web/archive/favorites-1.1.1.zip

解压

unzip favorites-1.1.1.zip

进入目录

cd favorites-web-favorites-1.1.1/

修改配置文件

修改文件application-docker.properties

vi app/src/main/resources/application-docker.properties

修改内容如下

favorites.base.path=http://xx.xxx.xx.xx/

地址为部署服务器的地址

启动项目

配置完成后,后台启动

[root@~]# docker-compose up -dCreating network "favoriteswebfavorites111_default" with the default driverCreating favorites-nginx                  ... doneCreating favoriteswebfavorites111_mysql_1 ... doneCreating favoriteswebfavorites111_app_1   ... done

启动完成后,浏览器访问上面配置地址:http://xx.xxx.xx.xx/,就可以看到云收藏的首页了。

辅助内容

启动后想查看某个容器内的服务运行情况,可以使用以下命令进入:

使用docker ps查看宿主机上面运行的 Docker 容器

[root@VM_73_217_centos ~]# docker psCONTAINER ID        IMAGE                            COMMAND                  CREATED             STATUS                  PORTS                                      NAMESa466ce6e58a5        favoriteswebfavorites111_app     "/usr/local/bin/mv..."   16 hours ago        Up 16 hours             8080/tcp                                   favoriteswebfavorites111_app_11b4f1b912de0        nginx:1.13                       "nginx -g 'daemon ..."   16 hours ago        Up 16 hours             0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   favorites-nginx65b481bb7741        favoriteswebfavorites111_mysql   "/entrypoint.sh my..."   16 hours ago        Up 16 hours (healthy)   0.0.0.0:3306->3306/tcp, 33060/tcp          favoriteswebfavorites111_mysql_1

根据上面查询的 Docker 容器 ID 信息,执行下面命令

docker exec -ti CONTAINER_ID  bash#比如进入项目容器中[root@VM_73_217_centos ~]# docker exec -ti a466ce6e58a5 bashroot@a466ce6e58a5:/app# ps -ef|grep java...

退出容器执行以下命令:

root@a466ce6e58a5:/app# exitexit[root@VM_73_217_centos ~]#

这样以后如果我们想部署云收藏项目就变的非常简单,仅仅需要三步可以愉快的搭建自己的收藏系统了。

关于如何使用Docker部署Spring Boot开源就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯