文章目录
更多相关内容可查看
前期准备
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
容器,容器的名字是 mysql
,root
用户的密码是 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;
还有其他问题可私信作者,或查看日志解决,希望大家遇见问题解决问题,不要逃避问题!