当前位置: 首页 > news >正文

Docker-部署Sringboot项目保姆级教程(附项目源码)

在这里插入图片描述

文章目录

    • 前期准备
    • 项目部署
      • 1.容器清理,自行清理docker中没用的容器
      • 2.docker安装 Mysql 容器
      • 3.数据库链接测试
      • 4.导入数据库文件
      • 5.使用 idea 将其打包成docker镜像
        • 修改docker.service文件
        • 重启docker
        • idea链接docker
        • pom.xml 添加 plagin
        • 编写dockfile文件
        • 打包测试
      • 外网访问
      • 推送到阿里云
    • 相关问题处理方式

更多相关内容可查看

前期准备

1.有一个springboot项目,如果没有自行拉取
项目地址:https://gitee.com/its-a-little-bad/mini-springboot-tmall-shang-c.git

2.已安装docker
如未安装请移步【CentOS7】Linux安装Docker教程(保姆篇)

项目部署

1.容器清理,自行清理docker中没用的容器

kill掉正在运行的mysql容器

docker kill 容器名/id

删除对应的mysql容器

docker rm 容器名/id

在这里插入图片描述

2.docker安装 Mysql 容器

docker run -it -d -v /docker/volumes/mysql/conf:/etc/mysql/conf.d -v /docker/volumes/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql -p 3306:3306 mysql:5.7.30

这个命令会在后台运行一个新的 MySQL 5.7.30 容器,容器的名字是 mysqlroot 用户的密码是 123456,并且把容器的 3306 端口映射到宿主机的 3306 端口。同时,它还把宿主机的两个目录挂载到了容器的相应目录,用来存储 MySQL 的配置文件和数据。

3.数据库链接测试

在这里插入图片描述

4.导入数据库文件

在这里插入图片描述

5.使用 idea 将其打包成docker镜像

修改docker.service文件

使其开启外网访问

vim /usr/lib/systemd/system/docker.serviceExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:6500 -H unix:///var/run/docker.sock

在这里插入图片描述

重启docker
systemctl daemon-reloadsystemctl restart docker

在这里插入图片描述

idea链接docker

tcp在上面配置信息里存在,0.0.0.0请改成自己的服务器地址
在这里插入图片描述
连接成功测试
在这里插入图片描述

pom.xml 添加 plagin

可以把自己的build直接进行替换,相关参数可以看注释

  <build><finalName>springboot-shiro</finalName><resources><resource><directory>src/main/resources</directory><filtering>false</filtering><includes><include>**/*</include></includes></resource><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource></resources><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><executions><execution><goals><goal>repackage</goal></goals></execution></executions><configuration><includeSystemScope>true</includeSystemScope><mainClass>com.xq.tmall.TmallSpringBootApplication</mainClass></configuration></plugin><!-- docker的maven插件,官网:https://github.com/spotify/docker-maven-plugin --><plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>0.4.13</version><configuration><!-- 注意imageName一定要是符合正则[a-z0-9-_.]的,否则构建不会成功 --><!-- 详见:https://github.com/spotify/docker-maven-plugin    Invalid repository name ... only [a-z0-9-_.] are allowed--><imageName>registry.cn-hangzhou.aliyuncs.com/images_twl/springboot-text/${project.artifactId}</imageName><!-- 指定Dockerfile所在的路径 --><dockerDirectory>${project.basedir}/docker</dockerDirectory><dockerHost>http://0.0.0.0:6500</dockerHost><resources><resource><targetPath>/</targetPath><directory>${project.build.directory}</directory><include>${project.build.finalName}.jar</include></resource></resources></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>8</source><target>8</target></configuration></plugin><!--添加配置跳过测试--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>2.22.1</version><configuration><skipTests>true</skipTests></configuration></plugin></plugins></build>
编写dockfile文件
#所需基础镜像
FROM openjdk:8-jdk-alpine
#具名挂载
VOLUME /docker/springboot
#端口暴露80
EXPOSE 80
#将我们的jar 添加到容器中 并取名为application.jar
ADD springboot-shiro.jar application.jar
# 执行命令
ENTRYPOINT ["java","-Xmx350m","-jar" ,"application.jar"]
打包测试

在idea的Terminal中执行打包命令,第一次打包时间会有点长等待一下即可

mvn clean package docker:build

在这里插入图片描述

在服务器中查询打包好的镜像

在这里插入图片描述

运行镜像
这里注意:可能是80端口,也可能是8080端口可以通过命令查看项目运行的端口是什么

docker logs <container_id>

在这里插入图片描述

docker run -d -p 6501:8080 --name springboot 34adee6105ce 

外网访问

在这里插入图片描述

推送到阿里云

具体操作可查看:Docker-自定义镜像发布到DockerHub仓库、阿里云仓库

docker tag dd373134eae4 registry.cn-hangzhou.aliyuncs.com/images_twl/images:springboot
docker push registry.cn-hangzhou.aliyuncs.com/images_twl/images:springboot

成功示例

在这里插入图片描述
在这里插入图片描述

相关问题处理方式

小编踩过的坑~~~

连不上数据库
注意修改配置文件,数据库地址要为服务器中的数据库,重新打包测试
在这里插入图片描述

表名大小写问题
在某些操作系统(如Linux)中,MySQL的表名是区分大小写的。如果你在创建表时使用的是小写名称(如productorder),但在查询时使用的是大写或混合大小写名称(如productOrder),那么MySQL将无法找到这个表。你需要确保在查询时使用的表名与创建时的表名大小写完全一致。

关闭ONLY_FULL_GROUP_BY模式:
可在服务器中执行,也可以在navicat中执行

//关闭全局
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
//关闭当前会话
SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
[mysqld]
//修改my.cnf文件
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

附查看数据库命令
进入数据库

exec -it mysql bash

登陆账号密码

mysql -u root -p
password:

选择数据库

USE tmalldemodb;

查看表

SHOW TABLES;

查看数据库sql_mode

SELECT @@sql_mode;

查看全局数据库sql_mode

SELECT @@global.sql_mode;

还有其他问题可私信作者,或查看日志解决,希望大家遇见问题解决问题,不要逃避问题!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • RTOS系统 -- ARM Cortex-M4 RPMSG之通道初始化函数
  • k8s NetworkPolicy
  • [深度学习]卷积理解
  • 这几个开放式耳机值得买?六点选购建议你要注意了
  • 【机器学习】线性判别分析(LDA):从理论到实践
  • LangChain框架详解
  • 9月Sui Builder House新加坡站开启报名
  • 白骑士的C语言教学高级篇 3.4 C语言中的算法
  • 使用Java和WebSocket设计大型聊天系统的理论探讨
  • 【python】IPython的使用技巧
  • eclipse安装lombok
  • 萝卜快跑的狠活
  • FFmpeg——视频拼接总结
  • 昇思25天学习打卡营第17天|文本解码原理--以MindNLP为例
  • 迅狐抖音机构号授权矩阵系统源码
  • 07.Android之多媒体问题
  • 2017 前端面试准备 - 收藏集 - 掘金
  • Angularjs之国际化
  • AWS实战 - 利用IAM对S3做访问控制
  • docker容器内的网络抓包
  • idea + plantuml 画流程图
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • Lucene解析 - 基本概念
  • MySQL QA
  • Object.assign方法不能实现深复制
  • Redis 中的布隆过滤器
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • vue-cli3搭建项目
  • 机器学习 vs. 深度学习
  • 使用 @font-face
  • 携程小程序初体验
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • C# - 为值类型重定义相等性
  • puppet连载22:define用法
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • ​虚拟化系列介绍(十)
  • #1015 : KMP算法
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (Forward) Music Player: From UI Proposal to Code
  • (ISPRS,2021)具有遥感知识图谱的鲁棒深度对齐网络用于零样本和广义零样本遥感图像场景分类
  • (javascript)再说document.body.scrollTop的使用问题
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (WSI分类)WSI分类文献小综述 2024
  • (zt)最盛行的警世狂言(爆笑)
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (二十九)STL map容器(映射)与STL pair容器(值对)
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (附源码)计算机毕业设计高校学生选课系统
  • (九)信息融合方式简介
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (十一)图像的罗伯特梯度锐化
  • (一)、软硬件全开源智能手表,与手机互联,标配多表盘,功能丰富(ZSWatch-Zephyr)
  • (一)Neo4j下载安装以及初次使用