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

在这里插入图片描述


更多相关内容可查看

前期准备

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.service

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:6500 -H unix:///var/run/docker.sock

在这里插入图片描述

重启docker
systemctl daemon-reload

systemctl 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;

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

  • 43
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

来一杯龙舌兰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值