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

Windows中将springboot项目运行到docker的容器中

0,先打包好项目,再启动docker
请添加图片描述

1,在Java项目根目录下创建一个名为Dockerfile的文件(没有扩展名),并添加以下内容。

# 使用OpenJDK的基础镜像
FROM openjdk:8-jdk-alpine# 设置工作目录
WORKDIR /app# 将项目中的jar包复制到镜像中,并且在镜像中的/app工作目录下重命名为app.jar
COPY target/打好的应用包.jar app.jar# 暴露应用端口
EXPOSE 8080# 启动应用
ENTRYPOINT ["java", "-jar", "/app/app.jar"]

请添加图片描述

2,打开PowerShell,导航到你的项目根目录(包含Dockerfile的目录),然后运行以下命令来构建Docker镜像,注意命令最后的 . ,代表在当前目录下的Dockerfile文件
docker build -t 镜像名称 .

3,构建完镜像后,使用以下命令来运行容器:-d表示在后台运行容器,-p 8080:8080将容器的8080端口映射到主机的8080端口
docker run -d -p 8080:8080 --name 对外显示的容器名称 镜像名称
请添加图片描述

4,打开浏览器,访问http://localhost:8080看是否正常运行,以下命令可以查看日志
docker logs 对外显示的容器名称
请添加图片描述

以上部分还不能访问数据库,有几种解决方案,我试过之后再更新上来
1将数据库服务也容器化
2修改Docker容器的网络配置
3使用Docker Compose来管理多容器应用

解决方案一:
在上方第3步的指令中添加一个–net=host设置网络为共享主机模式,这样能访问宿主机的数据库,如下:

docker run -d -p 8080:8080 --name 对外显示的容器名称 --net=host 镜像名称

但意义不大,因为数据库要么在其它服务器,要么在其它容器中。

解决方案二:
为了安全起见,容器创建时默认是桥接模式,不管容器是否设置了共享主机模式,先在PowerShell中从容器ping一下数据库所在ip,看是否能通,或者用telnet看一下是否能连上3306端口。

docker exec -it 项目所在容器名称 ping 数据库所在容器名称或者IP地址
docker exec -it 项目所在容器名称 telnet 数据库所在容器名称或者IP地址 3306

请添加图片描述
能ping通的话,直接在项目的yml文件中设置数据库配置就好
请添加图片描述
用Navicat连接上数据库,添加数据库所在IP地址的用户,并给与全部权限
请添加图片描述
停止容器,删除容器,重新执行第2和第3步构建镜像和运行容器即可访问数据库了。

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

相关文章:

  • 30、使用ESP8266跟SG90舵机制作四足蜘蛛机器人
  • 相比普通LED显示屏,强力巨彩软模组有哪些优势?
  • 部门操作和日志
  • antdv-<a-button>中属性的使用
  • python解题之寻找最大的葫芦
  • iOS 环境搭建教程
  • 制作容器镜像
  • 基于Python对xslxslx文件进行操作
  • 语音芯片赋能可穿戴设备:开启个性化音频新体验
  • Unity学习笔记(一)如何实现物体之间碰撞
  • LinkedList与链表 和 链表面试题
  • ansible自动化运维(一)简介及清单,模块
  • 利用代理IP爬取Zillow房产数据用于数据分析
  • 大屏开源项目go-view二次开发1----环境搭建(C#)
  • 【含开题报告+文档+PPT+源码】基于微信小程序的点餐系统的设计与实现
  • k8s中用filebeat文件如何收集不同service的日志
  • Mysql数据库中,什么情况下设置了索引但无法使用?
  • QT6学习第十一天 Qt Quick控件 Control
  • 【唐叔学算法】第16天:枚举-探索所有可能性的艺术
  • 【OpenCV】基于GrabCut算法的交互式前景提取
  • 【Flask+OpenAI】利用Flask+OpenAI Key实现GPT4-智能AI对话接口demo - 从0到1手把手全教程(附源码)
  • 最短路----Dijkstra算法详解
  • ORB-SLAM3源码学习:G2oTypes.cc: void EdgeInertial::computeError 计算预积分残差
  • Unity协程机制详解
  • 2024年【高压电工】最新解析及高压电工考试总结
  • OELOVE 6.0城市列表模板
  • 如何将你的 Ruby 应用程序从 OpenSearch 迁移到 Elasticsearch
  • day1数据结构,关键字,内存空间存储与动态分区,释放
  • 1_linux系统网络性能如何优化——几种开源网络协议栈比较
  • 【问题记录】07 MAC电脑,使用FileZilla(SFTP)连接堡垒机不成功