docker-compose把微服务部署到centos7

news2024/10/7 18:21:02

前言

这里主要记录以下微服务使用docker、docker-compose部署遇到的一些问题,大佬可以绕道去看看自动化集成这篇文章

部署之前你需要准备一些内容

微服务

这里feign-api是用来做服务之间相互调用的,单独抽离成了一个模块,gateway是服务网关,其余是具体的服务

在这里插入图片描述

centos7、xshlee、xftp

VMware虚拟机用于安装centos7,条件允许可以直接上真实服务器,我是在本地安装的,Xshell用于在本地连接远程主机,Xftp用于文件传输,cnetos7最好配置成固定ip

在这里插入图片描述

安装docker

1、 卸载安装过的旧版本,也可以看这里docker安装

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  docker-ce

2、安装gcc环境

#顺序执行
yum -y install gcc
yum -y install gcc-c++

3、安装yum工具

yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken

4、设置stable镜像仓库

yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

5、更新yum包软件索引

yum makecache fast

6、安装并启动docker

#安装
yum -y install docker-ce docker-ce-cli containerd.io
#启动
systemctl start docker
#查看版本
docker version
#一些常用命令
systemctl daemon-reload //重载系统服务
systemctl list-unit-files --type service //查看全部服务命令
systemctl status docker  // 查看docker服务状态
systemctl enable docker //设置docker开机自启动
systemctl disable docker // 关闭docker开机启动
systemctl start docker // 启动docker服务
systemctl stop docker // 停止docker服务
systemctl restart docker // 重启docker服务

7、配置镜像加速

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://qlmy5iw9.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

docker-compose安装

#安装 有点慢 稍微等待一下
sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
#给docker-compose执行权
sudo chmod +x /usr/local/bin/docker-compose
#查看版本
docker-compose --version

部署

每个服务都需要一个DockerFile文件,建议基于别人打包好的基础镜像开始构建,每个微服务都是一个文件目录,格式如下

#DockerFile内容 基于java:8-alpine构建
FROM java:8-alpine
#微服务打包时命名为app
COPY ./app.jar /tmp/app.jar
ENTRYPOINT java -jar /tmp/app.jar

在这里插入图片描述

贴两条我手动一个个容器启动的命令,这里不重要可以跳过

#docker 启动nacos容器
#拉取镜像
docker pull nacos/nacos-server:1.4.1
docker run -d --name nacos -p 8848:8848 -v /docker/nacos/logs:/home/nacos/logs -v /docker/nacos/data:/home/nacos/data -v /docker/nacos/config:/home/nacos/config -e MODE=standalone -e SPRING_DATASOURCE_PLATFORM=mysql -e MYSQL_SERVICE_HOST=192.168.29.129 -e MYSQL_SERVICE_PORT=3306 -e MYSQL_SERVICE_DB_NAME=nacos_config -e MYSQL_SERVICE_USER=root -e MYSQL_SERVICE_PASSWORD=123456 nacos/nacos-server:1.4.1

#docker 启动mysql容器
#拉取镜像
docker pull mysql:5.7 
docker run -d -p 3306:3306 --privileged=true -v /docker/mysql/conf/my.cnf:/etc/my.cnf -v /docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci

在外层准备一个docker-compose.yml配置文件,这里nacos和mysql也作为单独容器运行,并通过数据卷映射到了centos7文件上,不做映射每次删除容器数据都会丢失。这里有个小问题就是个个服务的启动顺序,nacos启动比较慢,导致其它服务注册不上去,可以通过docker-compose logs x服务名称x 查看个个服务启动的日志,也可以加depengs_on配置指定启动顺序,但是我喜欢重启除nacos,mysql的所有服务,这里附个docker-compose参数说明

version: "3.2"

services:
  nacos:
    image: nacos/nacos-server:1.4.1
    container_name: nacos
    environment:
      SPRING_DATASOURCE_PLATFORM: mysql
      #单例启动
      MODE: standalone
      #配置centos7 ip地址
      MYSQL_SERVICE_HOST: 192.168.29.129
      #mysql中nacos数据库的名称 其余均为数据库信息
      MYSQL_SERVICE_DB_NAME: nacos_config
      MYSQL_SERVICE_PORT: 3306
      MYSQL_SERVICE_USER: root
      MYSQL_SERVICE_PASSWORD: 123456
      #nacos服务在容器中的端口
      NACOS_APPLICATION_PORT: 8848
    #数据卷挂载    
    volumes:
       - /docker/nacos/logs:/home/nacos/logs
       - /docker/nacos/data:/home/nacos/data
       - /docker/nacos/config:/home/nacos/config 
    ports:
      - "8848:8848"
  mysql:
    image: mysql:5.7
    container_name: mysql
    #给容器root权限
    privileged: true
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    #数据卷挂载  
    volumes:
       - /docker/mysql/conf/my.cnf:/etc/my.cnf 
       - /docker/mysql/data:/var/lib/mysql
    #这个端口映射主要是为了解决在本地(windows系统)无法通过navicat连接容器中的mysql数据库,
    #开发测试比较方便,但是在centos7上面安装navicat的话就不用配置ports
    #可以通过expose配置向centos7暴露接口供其它服务访问,而外界无法直接通过centos7连接 
    #后续测试以下expose能否开启多个服务实例
    ports:
       - "3306:3306"
  userservice:
    build: ./user-service
  orderservice:
    build: ./order-service
  gateway:
    build: ./gateway
    ports:
      - "10010:10010"

在这里插入图片描述

执行以下代码开始构建

#运行以下命令构建镜像并启动容器
docker-compose up -d
#查看镜像
docker images
#查看所有容器
docker ps -a

镜像列表、容器列表、文件映射

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

navicat连接mysql数据库

在这里插入图片描述

#如果出现上图所示错误,依次执行以下命令
#进入 MySQL 容器
docker exec -it mysql bash
#登录 MySQL,执行后输入密码进入  
mysql -uroot -p  
#选择使用 mysql 数据库
use mysql;  
#允许任何ip通过使用root进行访问
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; 
#刷新权限
FLUSH PRIVILEGES;
#如果navicat任然不能连接,请务必重启centos7主机然后再启动容器重新连接

在这里插入图片描述

服务正常注册,配置文件也能正常写入数据库中,跨服务的接口调用也正常

在这里插入图片描述

在这里插入图片描述

说得不对的地方望大佬们指出,后续有问题会接着写

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

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

相关文章

中国电子学会2023年05月份青少年软件编程C++等级考试试卷三级真题(含答案)

1.找和为K的两个元素 在一个长度为n(n < 1000)的整数序列中&#xff0c;判断是否存在某两个元素之和为k。 【输入】 第一行输入序列的长度n和k&#xff0c;用空格分开。 第二行输入序列中的n个整数&#xff0c;用空格分开。 【输出】 如果存在某两个元素的和为k&#xff0c…

CentOs中文件权限命令

文件权限&#xff1a; ls -l命令查看文件详情&#xff0c;前十位就是文件的类型和权限 第一位&#xff1a;类型&#xff1a; - 普通文件 d 目录 l 链接文件&#xff08;快捷方式&#xff09;link 2~4位&#xff1a;所有者的权限 5~7位&#xff1a;所有者所在组其它用户的权限 …

AI绘图-StableDiffusion安装

AI绘图-StableDiffusion安装 安装Python 1、去官网 https://www.python.org/downloads/ 下载Python3.10.10版本&#xff0c;网上建议下载3.10.6版本。 2、安装Python,打开安装界面&#xff0c;注意把Add Python to PATH选项勾上&#xff0c;然后选择自定义安装 3、点击WinR…

【数据结构与算法】2、链表(简单模拟 Java 中的 LinkedList 集合,反转链表面试题)

目录 一、链表基本概念和基本代码实现二、链表、动态数组整合&#xff08;面向接口编程&#xff09;三、clear()四、add(int index, E element)(1) 找到 index 位置的节点(2) get(int index) 和 set(int index, E element)(3) add(int index, E element) 五、remove(int index)…

基于Java+Swing+Socket实现中国象棋-网络版

基于JavaSwingSocket实现中国象棋-网络版 一、系统介绍二、功能展示1.系统登陆2.选择黑色方进行对局3.整体页面4、保存棋谱5、认输 三、其他系统四、获取源码 前言 中国象棋是起源于中国的一种棋&#xff0c;属于二人对抗性游戏的一种&#xff0c;在中国有着悠久的历史。由于用…

员工管理业务开发 -- 手把手教你做ssm+springboot入门后端项目黑马程序员瑞吉外卖(三)

文章目录 前言六、员工管理业务开发1.开发功能预览2.新增员工功能1&#xff09;需求分析2&#xff09;数据模型&#xff08;表&#xff09;3&#xff09;代码开发4&#xff09;功能测试5&#xff09;编写全局异常处理器 3.员工信息分页查询1&#xff09;需求分析2&#xff09;代…

VS Code的下载安装,及其简单使用

目录 前言 一.下载 二.安装 三.VS Code的插件安装 &#x1f496;插件正常安装 &#x1f496;插件安装异常 四.VS Code的配置 五.VS Code的基本使用 总结 &#x1f381;个人主页&#xff1a;tq02的博客_CSDN博客-C语言,Java领域博主 &#x1f3a5; 本文由 tq02 原创&#…

Redis 分布式锁实现

Redis 分布式锁 分布式锁&#xff1a;满足分布式系统或集群模式下多进程可见并且互斥的锁 特点&#xff1a; 多线程可见互斥高可用高性能&#xff08;高并发&#xff09;安全性、可重入性、重试机制、锁超时自动续期等 … 加锁之后&#xff0c;对整个分布式集群都有效 基于…

多线程之常用线程安全类型分析

写在前面 本文一起看下在日常工作中我们经常用到的线程安全的数据类型&#xff0c;以及一些经验总结。 1&#xff1a;常用线程安全数据类型 1.1&#xff1a;jdk集合数据类型 jdk的集合数据类型分为两类&#xff0c;一种是线性数据结构&#xff0c;另外一种是字典结构&#…

【系统架构】第五章-软件工程基础知识(一)

软考-系统架构设计师知识点提炼-系统架构设计师教程&#xff08;第2版&#xff09; 软件工程 一、软件过程模型 1、瀑布模型 特点&#xff1a;前一个阶段工作的输出结果&#xff0c;是后一个阶段工作的输入 缺点&#xff1a; 软件需求的完整性、正确性等很难确定&#xff0c…

人力资源外包系统(社会实践管理系统)需求分析文档

该系统主要针对当前在校大学生、中专院校学生寒、暑假社会实践而设计的管理系统&#xff1b; 主要用户群为人力资源外包公司&#xff0c;也可以是各个学校管理学生使用&#xff1b; 主要功能有维护企业信息&#xff0c;招工信息&#xff0c;企业宣传资料&#xff1b;维护学校…

基于JavaSpringBoot+uniapp制作一个记账小程序

你不理财,财不理你,制作一个记账小程序对自己的收入/支出明细进行管理,守护好自己的钱袋子。 一、小程序1.1 项目创建1.2 首页1.3 收支报表页1.4 记账提交页1.5 记账列表页

NCI Core Framework

3.1 概述 NCI 核心包括以下必需的功能&#xff1a;  通过 NCI 传输命令、响应、通知和数据消息的数据包格式。  用于设备主机和 NFC 控制器之间不同操作&#xff08;第 4 节中指定&#xff09;的命令、响应和通知的定义。 &#xff08;本规范后面的一些部分定义了不属于…

一起学SF框架系列4.7-模块context-MessageResource

Spring通过MessageSource接口提供了国际化&#xff08;“i18n”&#xff09;功能。搞明白MessageResource相关接口和类&#xff0c;基本就掌握了国际化功能。 MessageSource接口 定义了消息访问接口。 String getMessage&#xff08;String code&#xff0c;Object[]args&…

全网唯一!Matlab原神配色包MGenshin

前段时间&#xff0c;在原神官网逛了一圈&#xff0c;发现里面角色的原画配色十分的好看&#xff0c;便突发奇想&#xff1a;要是把原神配色用在SCI论文插图上&#xff0c;emmmmm…… 于是&#xff0c;我默默打开了自己的Matlab&#xff0c;用TheColor工具箱的图片主题色提取功…

数据驱动的商业决策:BI在企业中的重要性

第一章&#xff1a;引言 在当今数字化时代&#xff0c;数据被广泛应用于各个行业和领域。对企业而言&#xff0c;数据是一项宝贵的资源&#xff0c;可以为其带来无限的商机和竞争优势。然而&#xff0c;海量的数据本身并不具备实际意义&#xff0c;只有通过有效的数据分析和洞…

亚马逊云科技中国峰会:Amazon DeepRacer-梦想加速度

零&#xff1a;前言 你是否憧憬在赛车赛道上开车&#xff0c;享受疾驰而过的感觉&#xff0c;感受无与伦比的驾驶乐趣&#xff1f; Amazon DeepRacer可以满足你的梦想&#xff0c;虚竹哥带你了解Amazon DeepRacer。 它为用户提供了一个虚拟仿真环境和一个真实赛车模型&#xf…

【JDK环境配置】| 两种JDK环境能在同一台电脑共存吗?(文末送书)

目录 &#x1f981; 前言&#x1f981; 基础环境&#x1f981; 安装JDK1.8Ⅰ. 下载Ⅱ. 安装 &#x1f981; 在项目里更改JDK版本---------------------------------------------福利在下面--------------------------------------------------&#x1f981; 福利&#xff08;送…

《基于同态加密和秘密分享的纵向联邦LR协议研究》论文阅读

论文地址&#xff1a;https://xueshu.baidu.com/usercenter/paper/show?paperid1b7e04e0r41x0ax0976q0gy0m5242465 摘要 提出了一种新颖的两方纵向联邦逻辑回归协议,并在半诚实安全模型下证明了该协议的安全性, 包括模型训练流程和模型推理流程的安全性,且无需对非线性函数使…

C++四种基本类型转换

C四种基本类型转换 1.static_cast2.const_cast3.reinterpret_cast4 .dynamic_cast 1.static_cast 用法: static_cast<type_name> (expression) 说明:该运算符把expression转换为typen_name类型&#xff0c;static_cast在编译时使用类型信息执行转换,在转换执行必要的检测…