Docker部署jeecgboot微服务使用记录

news2024/11/28 19:17:04

docker安装和基础命令

docker安装

docker安装详细步骤

Docker命令

#进入容器
sudo docker exec -it 775c7c9ee1e1 /bin/bash
# docker中 启动所有的容器命令
docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)
# docker中 关闭所有的容器命令
docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)
#docker中 删除所有的容器命令
docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2)
#docker中 删除所有的镜像
docker rmi $(docker images | awk '{print $3}' |tail -n +2)

docker stop jeecg-boot-nacos
docker stop jeecg-boot-gateway
docker stop jeecg-boot-system

docker rm jeecg-boot-nacos
docker rm jeecg-boot-gateway
docker rm jeecg-boot-system

#查看日志最新100行
docker logs --tail=100  jeecg-boot-system

idea连接docker开放2375端口:

docker开放2375端口问题,放开端口配置以后(适用于本地电脑版本,云服务用idea连接服务器上的docker)

vi /lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd 
修改为:
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
执行命令
systemctl daemon-reload
systemctl restart docker
#修改完以后,还需要重启防火墙设置一下,才可以访问。未解决:第二次重启以后,需要开启防火墙才可以访问

//打开防火墙
systemctl start firewalld.service
//添加2375端口设置开放,永久
firewall-cmd --zone=public --add-port=2375/tcp --permanent
--permanent 永久有效
//开放端口后重启网络服务
systemctl restart firewalld
systemctl status firewalld
//关闭防火墙
systemctl stop firewalld.service
//查看已经开放的端口
firewall-cmd --list-ports

//设置firewall开机启动 
systemctl enable firewalld
禁止firewall开机启动
systemctl disable firewalld

docker一个一个安装服务

docker建立network通信

docker network create jeecg-network

docker安装redis配置

#拉取最新的redis
docker pull redis
#运行redis
docker run --restart=always -p 6379:6379 --network jeecg-network --network-alias jeecg-boot-redis --name myredis -v $PWD/home/redis/myredis/data:/data  -d redis redis-server --requirepass 123456 --appendonly yes
#持久化
--appendonly yes
#设置密码
–-requirepass 123456

docker启动mysql

#下载mysql
docker pull mysql:5.7
#运行,访问数据库
docker run -itd --name mysql-server -p 3306:3306  -e MYSQL_ROOT_PASSWORD=root --network jeecg-network --network-alias jeecg-boot-mysql --restart=always -v /home/data/mysql/data:/var/lib/mysql --privileged=true  mysql:5.7

#简单说明
--network jeecg-network 使用一个网络(用来java项目连接数据库的)
--network-alias jeecg-boot-mysql 该容器网络的别名(在mysql的连接地址上用这个别名)
--restart=always 开机自动重启
-d 后台运行
--name=mysql-server 容器取一个名称
-v /home/data/mysql/data:/var/lib/mysql 数据库作持久化,把容器里面的数据库挂载到虚拟机的home/data/mysql/data文件里面,,但少了配置项conf.d报错
--privileged=true   给容器加上特定权限,不然/var/lib/mysql会报没有权限的错误

#暂时无用
-v mysql-data:/home/data/mysql
#保存mysql配置,容器启动时报没有conf.d这个文件
-v /home/data/mysql/conf:/etc/mysql/conf.d 

jeecg修改环境配置

选择环境docker002,docker002.yaml里面配置有nacos需要访问的数据库连接

nacos文件下选择nacos, 自定义路由配置是nacos,所以在nacos上面创建了一个jeecg-docker002.yaml的配置文件,复制于jeecg-prod.yaml,修改里面的配置(比如需要访问的redis连接等)

nacos打包运行

nacos的dockerfile文件配置如下

# 使用jdk8作为基础镜像
FROM openjdk:8

COPY *.jar /jeecg-cloud-nacos-3.2.0.jar
# 作者说明
MAINTAINER 2399029275@qq.com
# 运行命令
RUN mkdir -p /jeecg-cloud-nacos
# 运行在一个文件里面
WORKDIR /jeecg-cloud-nacos

CMD ["--server.port=8848"]
# 暴露端口8848
EXPOSE 8848
# 配置容器完以后启动命令java -jar /jeecg-cloud-nacos-3.2.0.jar
ENTRYPOINT ["java","-jar","/jeecg-cloud-nacos-3.2.0.jar"]

 把dockerfile文件和jar文件放到同一文件目录下执行命令

docker build -t jeecg-boot-nacos:0.0.1  .

 生成镜像以后,运行镜像文件

docker run -d -P --name jeecg-boot-nacos -p 8848:8848 --network jeecg-network  jeecg-boot-nacos:0.0.1

#说明
--network jeecg-network  申明网络以后,可以访问同网络下的mysql数据库

gateway运行和打包

dockerfile文件配置如下

# 使用jdk8作为基础镜像
FROM openjdk:8

COPY *.jar /jeecg-cloud-gateway-3.2.0.jar
# 作者说明
MAINTAINER 2399029275@qq.com
# 运行命令
RUN mkdir -p /jeecg-cloud-gateway
# 运行在一个文件里面
WORKDIR /jeecg-cloud-gateway

CMD ["--server.port=9999"]
# 暴露端口9999
EXPOSE 9999
# 配置容器完以后启动命令java -jar /jeecg-cloud-gateway-3.2.0.jar
ENTRYPOINT ["java","-jar","/jeecg-cloud-gateway-3.2.0.jar"]

生成镜像文件

docker build -t jeecg-boot-gateway:0.0.1  .

部署镜像文件

docker run -d  --name jeecg-boot-gateway -p 9999:9999 --network jeecg-network  jeecg-boot-gateway:0.0.1

 即可在nacos的服务上,发现gateway已经被注册成功

jeecgboot-system程序按照以上步骤即可

docker一键安装各类服务

docker-compose使用

docker需要依次安装redis,jdk,nginx,mysql,软件jar包,有点麻烦,就诞生了docker-compose,一次性搞定docker里面的软件安装(注意docker-compose安装分为2个版本,一个win10系统及以上+hyper-v,一个是win10家庭版一下+virtualbox

idea连接服务器上的docker 步骤和方法(用于连接虚拟机安装有dokcer或者云服务器上的docker)

myslq持久化配置

version: '2'
services:
  jeecg-boot-mysql:
    build:
      context: ../db
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_ROOT_HOST: '%'
      TZ: Asia/Shanghai
    volumes:
      - "/mydata/docker_mysql/data:/var/lib/mysql"
      - "/mydata/docker_mysql/conf:/etc/mysql/conf.d"
    restart: always

# 添加一下配置做好持久化
volumes:
      - "/mydata/docker_mysql/data:/var/lib/mysql"
      - "/mydata/docker_mysql/conf:/etc/mysql/conf.d"

 挂载时候会出现权限Premission denied问题,一下是解决办法关闭SELinux即可

1、/usr/sbin/sestatus -v      ##如果SELinux status参数为enabled即为开启状态
SELinux status:                 enabled
2、getenforce                 ##也可以用这个命令检查
关闭SELinux:
1、临时关闭(不用重启机器):
setenforce 0                  ##设置SELinux 成为permissive模式
                              ##setenforce 1 设置SELinux 成为enforcing模式
2、修改配置文件需要重启机器:
修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
重启机器即可
 

gateway连接nacos失败

报错提示currentServerAddr: http://127.0.0.1:8848, err : Connection refused (Connection refused)

解决办法:

防火墙添加8848这个端口

系统配置的nacos发现地址为如下,以前是jeecg-boot-nacos,官网提示修改为127.0.0.1。我这里是修改为当前centos7系统的ip地址

<!--Nacos服务发现地址-->
<discovery.server-addr>192.168.5.62:8848</discovery.server-addr>

gateway连接redis失败

failed: No route to host: /192.168.5.62:6379

解决办法:防火墙开放6379这个端口

system连接mysql失败

The driver has not received any packets from the server

原因:等待mysql响应时间超时

show global variables like 'wait_timeout'
结果是2880,时间很短

解决办法:

#复制容器内的my.cnf到centos7系统的一个文件上
docker cp jeecg-boot-mysql:/etc/mysql/my.cnf /mydata/docker_mysql/conf
添加一个配置wait_timeout=86400
#把修改后的文件复制到容器里面
docker cp my.cnf jeecg-boot-mysql:/etc/mysql/my.cnf
#重启docker
systemctl restart docker
#在mysql执行语句
show global variables like 'wait_timeout'
结果是86400,修改成功

远程访问rabbitmq设置

  jeecg-boot-rabbitmq:
    # 安装rabbit 和 rabbit的管理端
    image: rabbitmq:3-management
    #image: rabbitmq:3
    environment:
      RABBITMQ_DEFAULT_USER: root
      RABBITMQ_DEFAULT_PASS: root123456
    ports:
      - 5672:5672
      - 15672:15672
    restart: always
    container_name: jeecg-boot-rabbitmq
    hostname: jeecg-boot-rabbitmq

输入ip/15672即可访问rabbitmq,environment设置用户名和密码

发现nacos程序和有的程序占用cpu过高

docker stats以后发现nacos的内存使用率已经占满了,以前设置内存是300m,后来设置为500m,有近80m的空闲内存使用率以后,cpu的占用率就下来了,内存太小了会导致问题

发现一个java程序占用cpu过高(没解决)

用finalshell时,发现cpu使用过高,由于部署了多个java项目,输入下面指令docker stats,找到是哪个容器的cpu使用率高CENTOS7-JAVA模拟CPU占用高及排查( 转)

docker stats
#结果
CONTAINER           CPU %               MEM USAGE / LIMIT       MEM %               NET I/O             BLOCK I/O           PIDS
192f6af33bf4        0.10%               8.363 MiB / 3.701 GiB   0.22%               44.3 kB / 4.98 kB   32 MB / 0 B         4
ca545479c841        0.37%               403.7 MiB / 3.701 GiB   10.65%              9.57 MB / 1.78 MB   315 MB / 29.8 MB    44
8c896f25399d        2.19%               243.5 MiB / 3.701 GiB   6.43%               1.48 MB / 2.07 MB   144 MB / 32.8 kB    59
9a6e1d0161b0        1.03%               465.1 MiB / 3.701 GiB   12.27%              3.43 MB / 2.8 MB    332 MB / 419 kB     173
c37390687244        82.64%              174.6 MiB / 3.701 GiB   4.61%               15.3 kB / 4.45 kB   0 B / 24.6 kB       15
#发现容器******的cpu使用率高

docker 分析cpu占用过高_打包爱的博客-CSDN博客_docker容器cpu过高

docker 容器里面安装jdk8,安装太慢了,不清楚为啥

发现Java程序把虚拟机内存占用完

情况如下

 在启动的

java -jar app0.jar

改为

java -Xms128m -Xmx256m -Xmn256m -jar app0.jar
# -Xms128m初始化堆大小
# -Xmx256m最大堆大小
# -Xmn256m青年代大小

以后启动项目还是占用高,估计配置错误,暂时用一下办法过度

输入

docker stats

 结果显示limit很多都为为3.7G

 在dockerfile文件里面添加一个配置mem_limit: 300m,限定内存大小

  jeecg-boot-demo:
    depends_on:
      - jeecg-boot-nacos
    build:
      context: ../jeecg-boot-module-demo
    ports:
      - 7002:7002
    mem_limit: 300m
    container_name: jeecg-boot-demo
    hostname: jeecg-boot-demo
    restart: on-failure
    environment:
      - TZ=Asia/Shanghai

重启项目,发现内存使用率就下来了,输入docker stats

CONTAINER           CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
429ec8fea4b2        4.60%               199.6 MiB / 200 MiB   99.78%              213 kB / 156 kB     911 MB / 785 MB     42
e63c462f4b0d        88.25%              186 MiB / 200 MiB     92.98%              86.5 kB / 42.5 kB   4.76 GB / 3.02 GB   214
e4865e5efda6        1.04%               337.1 MiB / 3.7 GiB   8.90%               2.21 MB / 3.67 MB   995 MB / 74.5 MB    51
63c38022daab        0.11%               4.32 MiB / 3.7 GiB    0.11%               1.4 MB / 567 kB     146 MB / 138 kB     4
bb639ca104b1        0.23%               60.26 MiB / 3.7 GiB   1.59%               367 kB / 1.06 MB    395 MB / 651 kB     30
de8222e6a6e7        0.00%               164 KiB / 300 MiB     0.05%               2.01 kB / 656 B     0 B / 0 B           2
35184542798f        211.47%             202.1 MiB / 300 MiB   67.36%              16.8 kB / 6.13 kB   0 B / 0 B           14
432cb50833c2        0.00%               164 KiB / 200 MiB     0.08%               698 B / 656 B       0 B / 0 B           2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/166218.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(黑马C++)L09 C++类型转换 异常 输入输出流

一、C类型转换 类型转换&#xff08;cast&#xff09;是将一种数据类型转换成另一种数据类型&#xff0c;一般情况下要尽量少的去使用类型转换&#xff0c;除非解决非常特殊的问题。 &#xff08;1&#xff09;静态转换&#xff08;static_cast&#xff09; static_cast使用…

联合证券|内外利好共振 今年A股可更乐观一点

在经历了开年首周的快速拉升后&#xff0c;上星期A股商场全体高位盘整。职业板块从普涨转为快速轮动&#xff0c;前期领涨的新能源及大消费主线均出现了必定程度的回撤&#xff0c;由金融、信创板块接力“领跑”。 展望后市&#xff0c;指数在盘整后能否持续上攻&#xff1f;外…

解决前后端分离Vue项目部署到服务器后出现的302重定向问题

解决前后端分离Vue项目部署到服务器后出现的302重定向问题问题描述问题原因定位问题解决方案校验修改效果相关阅读写在最后问题描述 最近发现自己开发的vue前后端分离项目因为使用了spring security 安全框架&#xff0c;即使在登录认证成功之后再调用一些正常的接口总是会莫名…

Xilinx 7系列FPGA之Spartan-7产品简介

以最低的成本获得无与伦比的性能和功耗效率如果您对功耗或性能的要求与成本要求一样严苛&#xff0c;那么请使用 Spartan -7 FPGA。该系列采用 TSMC&#xff08;台积电&#xff09; 的 28nm HPL 工艺制造&#xff0c;将小尺寸架构的Xilinx 7 系列FPGA 的广泛功能和符合 RoHS 标…

结构体专题详解

目录 &#x1f94e;什么是结构体&#xff1f; ⚾结构体的声明 &#x1f3c0;简单结构体的声明 &#x1f3d0;结构体的特殊声明 &#x1f3c8;结构体嵌套问题 &#x1f3c9;结构体的自引用 &#x1f3b3;结构体的内存大小 &#x1f94c;结构体的内存对齐 ⛳内存对齐的优点 ⚽还…

SAP 服务器参数文件详细解析

一、SAP参数的说明 SAP参数的学习需要了解SAP参数的作用、参数的启动顺序、参数的配置&#xff1b; 1、参数的启动顺序 a) 启动Start profileb) 启动default profilec) 启动instance profile 2、参数的位置 a) 启动参数Start profile的位置&#xff1a;/usr/sap//SYS/prof…

计讯物联数字乡村解决方案赋能乡村振兴

项目背景 数字乡村是乡村振兴的战略方向&#xff0c;是推动农村现代化的重要途径。当前&#xff0c;数字乡村建设正在加速推进&#xff0c;打造乡村数字治理新模式&#xff0c;提升乡村的数字化水平&#xff0c;进一步推动乡村振兴进入高质量发展新赛道。计讯物联作为数字乡村…

机器学习的几个公式

今天看了几个公式的推演过程&#xff0c;有些推演过程还不是很明白&#xff0c;再着担心自己后面会忘记&#xff0c;特来此记下笔记。python 是由自己特定的公式符号的&#xff0c;但推演过程需要掌握&#xff0c;其实过程不过程不是重点&#xff0c;只要是要记得公式的含义&am…

SocketCAN 命名空间 VCAN VXCAN CANGW 举例

文章目录NAMESPACESocketCAN最新 can-utils 安装VCAN 举例VXCAN 举例CANGW 举例参考NAMESPACE namespaces, 命名空间, 将全局系统资源包装在抽象中, 使命名空间中的进程看起来拥有自己全局资源的独立实例. 命名空间的一个用途是实现容器. Linux 命名空间类型及隔离物(Isolate…

译文 | Kubernetes 1.26:PodDisruptionBudget 守护不健康 Pod 时所用的驱逐策略

对于 Kubernetes 集群而言&#xff0c;想要确保日常干扰不影响应用的可用性&#xff0c;不是一个简单的任务。上月发布的 Kubernetes v1.26 增加了一个新的特性&#xff1a;允许针对 PodDisruptionBudget (PDB) 指定不健康 Pod 驱逐策略&#xff0c;这有助于在节点执行管理操作…

电商云仓是如何包装发货的?

包装不时是为了维护产品&#xff0c;而它从工厂地板移动到大型仓库&#xff0c;并最终经过批发或批发店抵达消费者。但是&#xff0c;自21世纪初以来&#xff0c;消费者希望与那些不时吸收着某种情感的品牌联络在一同&#xff0c;同时央求他们在心理上对品牌中止投资&#xff0…

【Java AWT 图形界面编程】Canvas 组件中使用 Graphics 绘图 ④ ( AWT 绘图窗口闪烁问题 )

文章目录一、AWT 绘图窗口闪烁问题二、完整代码示例一、AWT 绘图窗口闪烁问题 使用 Graphics 第一次绘图 完成后 , 如果在循环中 持续调用 Canvas#repaint() 函数刷新界面 , 代码如下 : import java.awt.*;public class HelloAWT {public static void main(String[] args) thr…

MySQL进阶——存储引擎

MySQL有9种存储引擎&#xff0c;不同的引擎&#xff0c;适合不同的场景&#xff0c;我们最常用的&#xff0c;可能就是InnoDB&#xff0c;应该是从5.5开始&#xff0c;就成为了MySQL的默认存储引擎。 show engines可以查询MySQL支持的这几种存储引擎&#xff0c;从表头能看出来…

SVN工程转Git工程Github托管

SVN工程转Git工程&Github托管1. 介绍2. autoAudioTest之SVN转Github步骤Step 1 工作环境(ubuntu)Step 2 安装升级必要软件Step 3 转换脚本Step 4 检查软件运行环境Step 5 生成authors.txtStep 6 SVN转换Git格式Step 7 Github新建空工程Step 8 Git提交已有工程Step 9 Git提交…

Dubbo快速入门看这一篇文章就够了

网站用户少,流量小,抗压力差(eg: ssm)网站用户量进一步增长,流量增多,服务器不能平滑扩容(eg: 多个ssm)网站用户和流量随时间稳步升高,需要随时进行服务器扩容(eg: rpc/http) 第2节 分布式框架解决的问题 1 2 3 4 5 6随着互联网架构的越来越复杂,由原来的单一架构 ...到... 流动…

M320、M601、HD1(RTU)功能对比

M320、M601、HD1_RTU硬件 / 软件功能对比一、硬件1.HD1-RTU2.Haas506-M3203.Haas506-M6014.对比区别二、软件1.对比区别一、硬件 1.HD1-RTU 详情参考HaaS506-HD1 (RTU) - 硬件介绍 2.Haas506-M320 详情参考HaaS506-M320 - 开发板介绍 3.Haas506-M601 详情参考HaaS506…

(二十二)简单算法和Lambda表达式

目录 前言: 1.选择排序 2.二分查找 3.Lambda表达式 前言: 算法是一个程序和软件的灵魂&#xff0c;要成为一名优秀的程序员&#xff0c;只有对基础算法全面掌握&#xff0c;才能在设计程序和编写代码的过程中显得得心应手。常用的基础算法有快速排序算法、堆排序算法、归并排…

每日一问-ChapGPT-20230115-关于断舍离

文章目录每日一问-ChapGPT系列起因每日一问-ChapGPT-20230115-关于断舍离人类脑是适合专心做一件事&#xff0c;还是适合并行做多件事做事情的优先顺序怎样安排chapGPT你是怎么学到这么多知识的chapGPT你拥有智慧吗chapGPT你是实时更新自己的模型吗chapGPT你有情感吗chapGPT你有…

C++程序卡死、UI界面卡顿问题的原因分析与总结

目录 1、概述 2、软件卡死问题 2.1、死循环 2.2、死锁 3、客户端软件的UI界面卡顿问题 3.1、UI线程在频繁地写日志到文件中&#xff0c;导致UI线程时不时的卡顿 3.2、从网上拷贝的代码中调用Sleep函数&#xff0c;导致UI界面有明显的卡顿 4、总结 VC常用功能开发汇总&a…

COCO_03 制作COCO格式数据集 dataset 与 dataloader

文章目录1 引言2 pycocotools介绍3 Dataset 构建4 Dataloader 构建4.1 解决batch中tensor维度不一致的打包问题4.2 collate_fn()函数分析AppendixA. convert_coco_poly_maskB. COCO_Transform参考1 引言 在之前的文章中&#xff0c;我们认识了COCO数据集的基本格式https://blo…