虚拟机Linux Red Hat 7.9 Docker部署.Net 7 Zr.Admin项目(后端)

0、环境信息

应用部署在虚拟机里的docker,里面的应用访问宿主主机的MySQL

1、开启MySQL远程访问

 使用非安装版MySQL参考Windows 使用 非安装版MySQL 8

为了避免出现

Host is not allowed to connect to this MySQL server

使用root用户登录

cmd进入到MySQL的bin目录

执行

 .\mysql.exe -u root -p

根据提示输入密码登录

选择mysql库

执行

use mysql;

更新用户权限

未更新权限前:

只允许本机访问

更新为所有地址都能访问

执行

update user set host = '%' where user = 'root';

由于我之前已经更新,所以Changed为0

刷新权限

执行

flush privileges;

为了避免出现

[Warning] [MY-010055] [Server] IP address '192.168.100.155' could not be resolved: 不知道 这样的主机。

my.ini 增加下面两个设置

阻止MySQL对外部连接进行DNS解析

skip-name-resolve

MySQL服务器监听所有可用的网络接口上的所有IP地址

bind-address = 0.0.0.0

修改完my.ini,要重启MySQL服务

完整my.ini

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_bin
init_connect='SET NAMES utf8mb4'
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
innodb_buffer_pool_size = 128M
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
# These are commonly set, remove the # and set as required.
basedir = D:\lsp\mysql-8.0.40-winx64
datadir = D:\lsp\mysql-8.0.40-winx64\data
port = 3306
skip-name-resolve
# server_id = .....
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
join_buffer_size = 128M
sort_buffer_size = 16M
read_rnd_buffer_size = 16M 
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
bind-address = 0.0.0.0

2、Docker挂载MySQL

由于使用的MySQL并非部署在docker里,所以通过挂载MySQL的方式访问外部MySQL

安装Docker参考Linux Red Hat 7.9 Server安装Docker

拉取MySQL镜像

执行

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:8.0

docker挂载MySQL

执行

sudo docker run --privileged=true \-p 13306:3306 --name mysql \-v /mydata/mysql/log:/var/log/mysql \-v /mydata/mysql/data:/var/lib/mysql \-v /mydata/mysql/conf:/etc/mysql/conf.d \-e MYSQL_ROOT_PASSWORD=root \-d swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:8.0

如果出现错误

[ERROR] [Entrypoint]: mysqld failed while attempting to check config

        command was: mysqld --verbose --help --log-bin-index=/tmp/tmp.XNYZPu9o0r

        mysqld: Can't read dir of '/etc/mysql/conf.d/' (OS errno 2 - No such file or directory)

mysqld: [ERROR] Stopped processing the 'includedir' directive in file /etc/my.cnf at line 36.

mysqld: [ERROR] Fatal error in defaults handling. Program aborted!

执行

mkdir -p /etc/mysql/conf.d

然后再重新执行挂载

3、Docker构建代码镜像

3.1 gitlab拉取代码

执行

git clone http://192.168.100.155:8088/lsp/zradmin.git

3.2 修改数据库访问地址

修改appsettings.json数据库连接信息,之前配置的是localhost,要改成宿主主机IP访问

进入配置文件目录:cd /lsp/code/zradmin/ZR.Admin.WebApi

修改保存

此时我们当前所在目录/lsp/code/zradmin/ZR.Admin.WebApi

复制Dockerfile 到上一级目录,即:/lsp/code/zradmin

执行

cp Dockerfile ../

3.3 构建镜像

执行

docker build -f Dockerfile -t zr-admin .

构建完成,查看生成的镜像

执行

 docker images

3.4 启动镜像

执行

docker run --net=host -p 8888:80 zr-admin

如果出现下面错误,就是MySQL没开启远程访问

最终成功启动

服务器上访问测试

执行

curl http://localhost:8888

4、宿主主机访问

当回到宿主本地浏览器通过远程IP访问时,却是无法访问

上网查找了很多,有说是防火墙问题、Docker网卡冲突问题,但是我Linux防火墙的永久关闭的,也重新设置网卡地址

还是无效!!!

后面查到,我们的启动的服务是否监听了所有网络地址

查看appsettings.json,发下配置文件的服务监听的是localhost,这就解释了为什么在Linux服务器上通过localhost可以访问

把appsettings.json中这几个地方的localhost改成0.0.0.0

保存后,删除旧的zr-admin镜像,重新执行构建命令

删除镜像

执行

docker rmi $(docker images | grep zr-admin | awk '{print $3}')

如果删除不成功,报错

Error response from daemon: conflict: unable to delete ab8b2857eb11 (cannot be forced) - image is being used by running container cc1c4f6ea67d

则需要先停止容器,再删除容器

停止容器

执行

docker stop $(docker ps -a | grep 'zr-admin' | awk '{print $1}')

删除容器

执行

docker rm $(docker ps -a | grep 'zr-admin' | awk '{print $1}')

删除镜像

重新执行命令:docker rmi $(docker images | grep zr-admin | awk '{print $3}')

重新执行构建命令:docker build -f Dockerfile -t zr-admin .

重新执行运行命令:docker run --net=host -p 8888:80 zr-admin

最终宿主主机浏览器访问

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

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

相关文章

UE小白学习日记

Level UE中的Level(关卡)和Unity中的Scene(场景)在概念和用途上非常相似,都是用来组织和管理3D环境的基本单位。让我为您详细对比一下: 相似之处: 它们都是游戏世界的容器,可以包含游戏对象、光照、地形等元素都支持场景/关卡的切换和加载都可以用来划分游戏内容,比如不同关…

cmake - build MS STL project

文章目录 cmake - build MS STL project概述笔记END cmake - build MS STL project 概述 MS在github上开源了VS IDE 用的STL实现。 想看看微软的测试用例中怎么用STL. 想先用CMake编译一个MS STL发布版出来。 笔记 CMake需要3.30以上, 拟采用 cmake-3.30.6-windows-x86_64.…

pyside6,让界面窗口在屏幕中间显示

有一些窗口需要剧中显示,比如登录窗口、消息窗口等。 def center(self):screen QApplication.primaryScreen().geometry()size self.geometry()self.move((screen.width() - size.width()) // 2,(screen.height() - size.height()) // 2) 首先,通过 “…

MCU 和 PSK

在加密和认证领域,MCU 和 PSK 是两个不同的概念,分别涉及硬件和密钥管理。下面是它们的含义和相关解释: 1. MCU 全称:Microcontroller Unit(微控制单元) 用途: MCU 是一种集成了 CPU、内存&am…

微信小程序之历史上的今天

微信小程序之历史上的今天 需求描述 今天我们再来做一个小程序,主要是搜索历史上的今天发生了哪些大事,结果如下 当天的历史事件或者根据事件选择的历史事件的列表: 点击某个详细的历史事件以后看到详细信息: API申请和小程序…

错误修改系列---基于RNN模型的心脏病预测(pytorch实现)

前言 前几天发布了pytorch实现,TensorFlow实现为:基于RNN模型的心脏病预测(tensorflow实现),但是一处繁琐地方 一处错误,这篇文章进行修改,修改效果还是好了不少;源文章为:基于RNN模型的心脏病…

vue.js+vite搭建一个简单的新春祈福活动网站

vue.jsvite搭建一个简单的新春祈福活动网站&#xff01;使用canvas技术&#xff0c;绘制视觉特效。 功能有&#xff1a;燃放烟花&#xff0c;和撞钟祈福。祈福撞钟我设计了是按钮事件&#xff0c;播放一个mp4动画&#xff0c;配上播放一段撞钟的生效文件mp3. <template>&…

vue3Class 与 Style 绑定

绑定 HTML class 1. 绑定对象 <div :class"{ active: isActive }"></div><divclass"static":class"{ active: isActive, text-danger: hasError }" ></div> //<div class"static active"></div>…

在 Ubuntu 下通过 Docker 部署 MySQL 服务器

引言 Docker 是一个开源的容器化平台&#xff0c;允许开发者将应用及其依赖打包成一个标准化的单元。MySQL 是一个广泛使用的关系型数据库管理系统&#xff0c;因其高性能、可靠性和易用性&#xff0c;成为许多应用的首选数据库。结合 Docker 和 MySQL&#xff0c;可以轻松地创…

有机物谱图信息的速查技巧有哪些?

谱图信息是化学家解读分子世界的“语言”&#xff0c;它们在化学研究的各个领域都发挥着不可或缺的作用。它们是理解和确定分子结构的关键&#xff0c;对化学家来说极为重要&#xff0c;每一种谱学技术都提供了不同的视角来观察分子&#xff0c;从而揭示其独特的化学和物理特性…

C++指针类型的基本理论和使用方式-学习记录

一、指针简概 &#xff08;一&#xff09;指针定义 指针&#xff08;pointer&#xff09;是“指向&#xff08;point to&#xff09;”另外一种类型的复合类型。与引用类似&#xff0c;指针也实现了对其他对象的间接访问。然而指针与引用相比又有很多不同点。其一&#xff0c;…

视频转码对画质有影响吗?视频融合平台EasyCVR支持哪些转码格式?

视频转码过程是将视频文件从一种编码格式转换为另一种格式的过程&#xff0c;这一过程在现代数字媒体中扮演着至关重要的角色。众所周知&#xff0c;视频转码不仅仅是简单的格式转换&#xff0c;它涉及多个关键参数的改变&#xff0c;例如视频编码格式、比特率、分辨率以及帧率…

微信小程序防止重复点击事件

直接写在app.wpy里面&#xff0c;全局可以调用 // 防止重复点击事件preventActive(fn) {const self this;if (this.globalData.PageActive) {this.globalData.PageActive false;if (fn) fn();setTimeout(() > {self.globalData.PageActive true;}, 3000); //设置该时间内…

STM32-WWDG/IWDG看门狗

WWDG/IWDG一旦开启不能关闭&#xff0c;可通过选项字节在上电时启动硬件看门狗&#xff0c;看门狗计数只能写入不能读取。看门狗启用时&#xff0c;T6bit必须置1&#xff0c;防止立即重置。 一、原理 独立看门狗-超时复位 窗口看门狗-喂狗&#xff08;重置计数器&#xff0c;…

【计算机网络】什么是AC和AP?

在现代的无线网络中&#xff0c;AC&#xff08;Access Controller&#xff0c;接入控制器&#xff09;和AP&#xff08;Access Point&#xff0c;无线接入点&#xff09;是两个至关重要的设备&#xff0c;它们在网络的管理、连接和优化中扮演着重要角色。理解它们的功能和区别&…

C++初阶—CC++内存管理

第一章&#xff1a;C/C内存分布 int globalVar 1; static int staticGlobalVar 1; void Test() {static int staticVar 1;int localVar 1;int num1[10] { 1, 2, 3, 4 };char char2[] "abcd";const char* pChar3 "abcd";int* ptr1 (int*)malloc(si…

排序的本质、数据类型及算法选择

排序的本质、数据类型及算法选择 一、排序的本质二、排序的数据类型三、排序算法的选择依据 前两天老金写了篇 “十大排序简介”&#xff0c;有点意犹未尽&#xff0c;这一回老金想把排序连根拔起&#xff0c;从排序的本质说道说道。 一、排序的本质 从字面上理解&#xff0c…

arcgisPro加载天地图(CGCS2000)影像

1、注册天地图账号&#xff1b; 2、申请key&#xff1b; 3、添加WMTS服务器。 这里已经办好了前两步&#xff0c;下面详细介绍最后一步。 添加WMTS服务器。 在天地图网站&#xff0c;找到如下页面&#xff0c; 复制网址&#xff0c;如&#xff1a;http://t0.tianditu.gov.cn…

【测试】持续集成CI/CD

近期更新完毕&#xff0c;建议关注收藏点赞&#xff5e; 目录 概括gitJenkinspostman集成jenkins代码集成jenkins 概括 CI/CD stands for Continuous Integration and Continuous Deployment 定义 团队成果持续集成到公共平台。一天可以集成1次or多次 本地代码管理 git 远程代…

python基础和redis

1. Map函数 2. filter函数 numbers generate_numbers() filtered_numbers filter(lambda x: x % 2 0, numbers) for _ in range(5):print(next(filtered_numbers)) # 输出: 0 2 4 6 83. filter map 和 reduce 4. picking and unpicking 5. python 没有函数的重载&#xff0…