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

【docker】

1.构建jar包
在这里插入图片描述
2.构建自定义的镜像dockerfile
vim Dockerfile

# 使用 OpenJDK 17 作为基础镜像,该镜像包含 JDK 17 环境
# 该镜像适用于需要编译或运行基于 JDK 17 的 Java 应用程序
 
FROM openjdk:8-jdk-alpine
 
# 设置容器中的工作目录为 /app
# 所有后续操作(如文件复制、命令执行等)都会基于该目录进行
 
WORKDIR /app
 
# 将本地的 JAR 文件 复制到容器的 /app 目录下
# COPY 命令将指定路径的文件从构建上下文复制到镜像中的目标路径
 
# 将jar包放入/app目录下,并重新命名为app.jar
ADD ruoyi-admin.jar ruoyi.jar

 
# 暴露容器的 8201端口,使得主机能够与容器的指定端口进行通信
# 通常用于 Web 服务或应用程序监听端口
# 可以根据应用需要更改为其他端口号
 
EXPOSE 8081
 
# 定义容器启动时的默认命令,使用 ENTRYPOINT 设置为 java -jar 来启动应用
# 这行命令会在容器启动时运行 Java 应用,加载指定的 JAR 文件
# 如果没有其他命令传入,ENTRYPOINT 将执行默认的 java -jar jar包名称
 
ENTRYPOINT ["java","-jar"] 
CMD ["app.jar"]
# 相当于 java -jar xxx.jar

构建镜像 docker build -t ruoyidemo .
(镜像名称)【注意有.表示当前目录】

启动容器 docker run --name ruoyidemo -p 8081:8081 -d
(容器名称)
在这里插入图片描述
1.【报错】“docker run” requires at least 1 argument. 少了镜像名称
docker run -d --name ruoyi -p 8081:8081 ruoyidemo
name后面是容器名称,ruoyidemo是镜像名称
在这里插入图片描述
2.端口占用
在这里插入图片描述
确实被占用了,又去改dockerfile里的改成8082
在这里插入图片描述
3.再运行,可能之前运行错误的时候,末尾写的ruoyi,已创建了个8081端口的错的ruoyi,于是删除docker rm ruoyi。重新再run,成功。
docker run -d --name ruoyi -p 8082:8082 --network hmall ruoyidemo
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
简单的两个命令,卡我两小时qvq

4.下一步解决项目和mysql、redis互相访问
在这里插入图片描述
6379是redis 8081是emqx mysql是3306

# 1.首先通过命令创建一个网络
docker network create hmall

# 2.然后查看网络
docker network ls
# 结果:
NETWORK ID     NAME      DRIVER    SCOPE
639bc44d0a87   bridge    bridge    local
403f16ec62a2   hmall     bridge    local
0dc0f72a0fbb   host      host      local
cd8d3e8df47b   none      null      local
# 其中,除了hmall以外,其它都是默认的网络

# 3.让dd和mysql都加入该网络,注意,在加入网络时可以通过--alias给容器起别名
# 这样该网络内的其它容器可以用别名互相访问!
# 3.1.mysql容器,指定别名为db,另外每一个容器都有一个别名是容器名
docker network connect hmall mysql --alias db
# 3.2.db容器,也就是我们的java项目
docker network connect hmall dd

# 4.进入dd容器,尝试利用别名访问db
# 4.1.进入容器
docker exec -it dd bash
# 4.2.用db别名访问
ping db
# 结果
PING db (172.18.0.2) 56(84) bytes of data.
64 bytes from mysql.hmall (172.18.0.2): icmp_seq=1 ttl=64 time=0.070 ms
64 bytes from mysql.hmall (172.18.0.2): icmp_seq=2 ttl=64 time=0.056 ms
# 4.3.用容器名访问
ping mysql
# 结果:
PING mysql (172.18.0.2) 56(84) bytes of data.
64 bytes from mysql.hmall (172.18.0.2): icmp_seq=1 ttl=64 time=0.044 ms
64 bytes from mysql.hmall (172.18.0.2): icmp_seq=2 ttl=64 time=0.054 ms

相关文章:

  • 前后端 Mock 技术实践指南【大模型总结】
  • 1、window 下SDL 下载使用, 测试环境搭建
  • 位运算题目:N 天后的牢房
  • [数据集]The Natural Scenes Dataset (NSD)介绍,申请及使用方法
  • 【蓝桥杯】算法笔记6
  • CubeMX配置STM32VET6实现网口通信(无操作系统版-附源码)
  • win11 nacos2.2.1 报错curl -X post 报错找不到和名称X匹配参数;不是命令
  • excel经验
  • (三十七)Dart 中使用 Pub 包管理系统与 HTTP 请求教程
  • leetcode0410. 分割数组的最大值-hard
  • 程序化广告行业(69/89):DMP与PCP系统核心功能剖析
  • STM32看门狗应用实战:独立看门狗与窗口看门狗深度解析(下) | 零基础入门STM32第九十五步
  • 详细介绍javaspringboot操控redis的高级特性1. 事务支持2. 发布/订阅3. Pipeline批量操作
  • git rebase复杂场景验证
  • QtConcurrent
  • COBOL语言的网络安全
  • AGI大模型(11):RAG系统
  • 在全球化浪潮下如何加强供应链风险管理?
  • Java全栈面试宝典:JMM内存模型与Spring自动装配深度解析
  • 数据结构实验3.1:顺序栈的基本操作与进制转换
  • 江都建设总部网站/武汉百度
  • 淄博网站建设讲解透彻/上海谷歌seo
  • 做电工的有接单的网站吗/电子商务营销方法
  • 常州网站建设/推广合作
  • 新疆公路建设管理局网站/正规网络公司关键词排名优化
  • 北京网站建设设计/竞价外包运营