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

docker部署SpringBoot项目简单流程

一、docker基础命令理解学习

1、常见命令

docker启动之前要关闭防火墙systemctl stop firewalld # 关闭防火墙systemctl disable firewalld # 禁止开机启动防火墙systemctl start docker # 启动docker服务systemctl stop docker # 停止docker服务systemctl restart docker # 重启docker服务

2、Docker镜像

docker images #查看已拉取的镜像docker pull apply:tag #拉取镜像 apply为应用名称 tag为版本号若不加":tag"则拉取的是最新版本docker rmi name:tag #删除镜像 name为镜像名称docker save -o name.tar name:tag #保存镜像 name.tar为保存文件名称+后缀docker load -i name.tar #docker加载镜像

3、Docker容器

docker run:创建并运行一个容器,处于运行状态docker pause:让一个运行的容器暂停docker unpause:让一个容器从暂停状态恢复运行docker stop:停止一个运行的容器docker start:让一个停止的容器再次运行docker rm:删除一个容器

4、创建并运行nginx容器

docker run --name mn -p 80:80 -d nginx 进入nginx容器 docker exec -it nginx bash docker logs name docker ps -a#查看容器运行状态 -a表示查看所有容器包括已经停止的

5、数据卷(数据卷用来映射容器与宿主机上的数据,保证了数据的复用以及隔离)

docker volume create name //创建一个数据卷docker volume inspect name //查看一个或多个数据卷的详细信息docker volume ls //查看所有数据卷docker volume rm name //删除指定数据卷docker volume prune //删除未使用的数据卷docker run --name nginx -p 80:80 -v html:/usr/share/nginx/html -d nginx //创建一个容器并将其html数据卷挂载至容器中的html

二、前端部署

Vue项目部署至服务器过程

1、把vue项目打包执行npm run build得到dist文件夹

2、将Vue项目制作为一个镜像需要下述文件

1.1.dist文件夹

1.2.Dockerfile

FROM nginx//镜像维护者
MAINTAINER zxRUN rm /etc/nginx/conf.d/default.confADD default.conf /etc/nginx/conf.d/COPY dist/ /usr/share/nginx/html/

1.3.default.conf

server {listen       80;server_name  47.93.38.162; # 修改为docker服务宿主机的ip
​location / {root   /usr/share/nginx/html;index  index.html index.htm;try_files $uri $uri/ /index.html =404;}
​error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}
}

将上述文件放入服务器所创建的文件夹当中

3、执行构建镜像命令

docker build -t ilpfront:1.0 .

4、创建容器

docker run -p 9090:80 --name iflfront -d ilpfront:1.0

三、后端部署

打包后端项目

要注意打包前将自己代码中的localhost如数据库连接配置以及Redis配置改为自己的云服务器ip地址 否则docker部署之后连接会失效,这是由于每个容器相当于一个独立的运行环境docker为其分配的ip也有所不同故使用localhost会无效

1、在pom.xml中复制如下打包配置

<!--打包配置--><packaging>jar</packaging>
<!--Maven插件用于打包Spring Boot应用程序--><build>
<!--项目打包名称--><finalName>ILFDemo</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version>
<!--SpringBoot启动类地址--><configuration><mainClass>com.sias.bootdemo.BootDemoApplication</mainClass></configuration><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build>

2、更新Maven后直接点击Maven的package

3、迁移至服务器准备镜像构建所需文件

在服务器上找一个合适的路径创建文件夹如/tmp/WebDemo

在WebDemo文件夹中需要如下三个文件

Dockerfile

# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录
ENV JAVA_DIR=/usr/local# 拷贝jdk和java项目的包将ILFDemo.jar改为自己的项目名.jar
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./ILFDemo.jar /tmp/app.jar# 安装JDK
RUN cd $JAVA_DIR \&& tar -xf ./jdk8.tar.gz \&& mv ./jdk1.8.0_144 ./java8# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin# 暴露端口
EXPOSE 8080
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar

4、创建镜像

准备好三的文件后在/tmp/WebDemo目录下输入如下指令

docker build -t webdemo:1.0 .

5、创建容器

docker run --name WebDemo -p 8090:8080 -d webdemo:1.0

8080为上面dockerfile文件后端暴漏的端口


四、数据库部署

1、拉取mysql镜像或者上传mysql.tar文件上传至服务器并将其加载为镜像 要注意自己项目所用的mysql版本我用的是5.7.25

2、数据卷挂载文件以及文件夹准备

2.1、创建/tmp/mysql/conf/hmy.cnf配置文件

hmy.cnf

[mysqld]
skip-name-resolve
character_set_server=utf8
datadir=/tmp/mysql
server-id=1000
explicit_defaults_for_timestamp=1
 

2.2、创建/tmp/mysql/data文件夹

3、创建容器

#创建容器
docker run \#命名容器--name mysql \#配置Mysql密码-e MYSQL_ROOT_PASSWORD=123 \#端口映射-p 3306:3306 \#mysql配置文件数 据卷挂载-v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \#mysql存储文件数据卷挂载-v /tmp/mysql/data:/var/lib/mysql \#容器后台运行-d \mysql:5.7.25

五、注意事项

1、mysql被攻击

谨防自己的mysql被攻击勒索,如果出现数据库容器创建后不久便频繁宕机并且上传的数据也全部消失可重新启动数据库查看数据库表很有可能找到勒索者留下的信息,我们的数据一般也不重要,单位了防止黑客频繁攻击我们可以在云服务器配置上面设置防火墙,只允许本地ip连接3306也就是数据库端口这样就可以通过可视化工具随时操作远程数据库了。

2、端口开放

我们创建并运行容器后一定要对外开放设置的端口号要不然云服务器会对请求进行拦截如阿里云开放端口操作步骤

设置的端口号就是自己创建容器时的映射端口如docker run --name mn -p 8090:80 file:1.0

8090就是对外暴漏的映射端口

完成如上步骤一个项目通过docker容器部署就简单完成了,如果部署顺利的话可以通过自己的服务器ip:前端所设置的端口号如我的辅助学习网站平台

大家如果有兴趣的话可以多光顾一下我的项目期待大家的各类建议

Fashion点点智能学习辅助平台——》http://xdlo.top

http://www.lryc.cn/news/530509.html

相关文章:

  • Python学习——函数参数详解
  • Chromium132 编译指南 - Android 篇(一):编译前准备
  • .Net / C# 繁体中文 与 简体中文 互相转换, 支持地方特色词汇
  • Java泛型深度解析(JDK23)
  • 【贪心算法篇】:“贪心”之旅--算法练习题中的智慧与策略(一)
  • AJAX XML
  • 踏入编程世界的第一个博客
  • 2025年1月22日(网络编程 udp)
  • 数据结构与算法之栈: LeetCode 641. 设计循环双端队列 (Ts版)
  • 从零开始学 HTML:构建网页的基本框架与技巧
  • 一些杂记2
  • C语言 --- 分支
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.10 ndarray内存模型:从指针到缓存优化
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.6 广播机制核心算法:维度扩展的数学建模
  • K8S极简教程(4小时快速学会)
  • 系统URL整合系列视频二(界面原型)
  • 虚幻浏览器插件 UE与JS通信
  • OpenAI深夜反击:o3-mini免费上线,能否撼动DeepSeek的地位?
  • Golang 应用的 Docker 部署方式介绍及使用详解
  • deep seek R1本地化部署及openAI API调用
  • 力扣第435场周赛讲解
  • 初入机器学习
  • Signature
  • 93,【1】buuctf web [网鼎杯 2020 朱雀组]phpweb
  • 笔灵ai写作技术浅析(四):知识图谱
  • Chromium132 编译指南 - Android 篇(四):配置 depot_tools
  • 使用真实 Elasticsearch 进行高级集成测试
  • SQL进阶实战技巧:如何分析浏览到下单各步骤转化率及流失用户数?
  • 机器学习--概览
  • 低代码系统-产品架构案例介绍、炎黄盈动-易鲸云(十二)