docker-compose把微服务部署到centos7

news/2024/10/30 15:31:07/

前言

这里主要记录以下微服务使用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.reposed -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.1container_name: nacosenvironment:SPRING_DATASOURCE_PLATFORM: mysql#单例启动MODE: standalone#配置centos7 ip地址MYSQL_SERVICE_HOST: 192.168.29.129#mysql中nacos数据库的名称 其余均为数据库信息MYSQL_SERVICE_DB_NAME: nacos_configMYSQL_SERVICE_PORT: 3306MYSQL_SERVICE_USER: rootMYSQL_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.7container_name: mysql#给容器root权限privileged: trueenvironment: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-serviceorderservice:build: ./order-servicegateway:build: ./gatewayports:- "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.ppmy.cn/news/548552.html

相关文章

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

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

低功耗蓝牙迈向工业车规级,助力充电桩和电动车智能化

近两年来&#xff0c;国内新能源汽车发展突飞猛进&#xff0c;一骑绝尘。据汽车工业协会统计&#xff0c;2022年1~6月份&#xff0c;新能源汽车的产销分别为266.1万辆和260万辆&#xff0c;同比均增长1.2倍&#xff0c;市场占有率达到了21.6%。另据公安部的统计&#xff0c;截至…

Qt 实现SQLite全部语法(增删改查、内置函数、高级语法)

Qt 实现SQLite全部语法 【1】SQLite Qt界面设计【2】SQLite Qt数据库创建、打开、关闭、删除【3】SQLite Qt表格的创建【4】SQLite Qt表格的插入【5】SQLite Qt表格的查询【6】SQLite Qt表格的删除【7】SQLite Qt表格的更新【8】SQLite Qt表格的结构【9】SQLite Qt表格的修改【…

SD/StableDiffusion部署图文教程,ai绘画教程,实现谷歌云端零成本部署,中文UI

目录 一、前言 二、准备前提 三、教程说明 四、开始搭建 1、第一步&#xff0c;下载ipynb脚本文件 2、第二步&#xff0c;上传一键脚本文件到谷歌云盘 3、选择该.ipynb文件--右键--打开方式--关联更多应用 4、输入框搜索Colaboratory找到该应用&#xff0c;安装 5、安…

【数据库】— 安全性、完整性、自主/强制存取控制、审计

【数据库】— 安全性、完整性、自主/强制存取控制、审计 一、什么是数据库中的自主存取控制方法和强制存取控制方法&#xff1f;二、什么是数据库的审计功能&#xff0c;为什么要提供审计功能&#xff1f;三、试述实现数据库安全性控制的常用方法和技术。四、数据库的完整性概念…

计算机专业内存要多大,买新台式电脑内存要多大?

在购买新的台式电脑的时候&#xff0c;我们都需要好好考虑一下要什么样的配置。 影响台式电脑的硬件有很多&#xff0c;其中内存是极重要的一个因素&#xff0c;买新台式电脑内存要多大&#xff1f; 1、2G内存的基本上淘汰&#xff0c;可以不用考虑&#xff0c;估计新机子也没有…

计算机主机怎么再加条内存条,电脑加了个内存条后,还要怎样设置

安装好内存后&#xff0c;这时打开电脑会发现并未成功扩展内存&#xff0c;可按如下步骤操作 1、开始 - 运行(输入msconfig)- 点击&#xff1a;确定或者回车; 2、在弹出的“系统配置”窗口中&#xff0c;我们点击&#xff1a;引导; 3、接着点击&#xff1a;高级选项(V); 4、在弹…

台式计算机内存条怎么装,台式电脑怎么装内存条_台式电脑加装内存条方法-win7之家...

在台式电脑上&#xff0c;我们要安装一些硬件就会方便很多&#xff0c;比如我们要安装内存条&#xff0c;直接打开机箱插入内存条接口就可以安装成功&#xff0c;但是还是会有用户不知道要怎么安装内存条的&#xff0c;那么台式电脑怎么装内存条呢&#xff0c;下面小编给大家分…