HalcyonAzure / lsky-pro-docker

☁️兰空图床(Lsky Pro) - Docker自动构建,支持多平台
GNU Affero General Public License v3.0
272 stars 65 forks source link

在群晖中部署该项目,使用127.0.0.1连接数据库报错:Connection refused #36

Closed bill1112004 closed 12 months ago

bill1112004 commented 12 months ago

自检均通过,数据库也已配置。安装提示失败 Dropping all tables ............................................... 9ms FAIL Installation error!

SQLSTATE[HY000] [2002] Connection refused (SQL: SHOW FULL TABLES WHERE table_type = 'BASE TABLE')

如下图 1700486471873

HalcyonAzure commented 12 months ago

docker-compose的内容是怎么样的?感觉可能是MySQL没配置好?

bill1112004 commented 12 months ago

docker-compose的内容是怎么样的?感觉可能是MySQL没配置好?

群晖里装的MariaDB10和PhpmyAdmin,新建了lsky数据库 附上日志给你看看 [Uploading halcyonazure-lsky-pro-docker-1.csv…]()

HalcyonAzure commented 12 months ago

日志链接打开重定向到了这个issue,无法打开。有相关文件吗?

bill1112004 commented 12 months ago

日志链接打开重定向到了这个issue,无法打开。有相关文件吗?

哪个issue?这个日志我看了半天,也没看到哪里有报错或者issue

HalcyonAzure commented 12 months ago

😂 我点开那个链接会回到咱这个issue,就是说你这个链接我没法正确打开你本来要发给我的日志 image

bill1112004 commented 12 months ago

😂 我点开那个链接会回到咱这个issue,就是说你这个链接我没法正确打开你本来要发给我的日志 image

halcyonazure-lsky-pro-docker-1.csv 这个应该可以下载了

HalcyonAzure commented 12 months ago

看lsky-pro的日志看不出啥,都挺正常的。你的数据库是用群晖的GUI方式部署的吗?是的话有配置网络或端口设置吗?

bill1112004 commented 12 months ago

群晖的GUI方式

套件中心部署的MariaDB 10和phpMyAdmin 开启了TCP/IP链接和端口 BU${7E{XE9% JA(VZAN6ISO

HalcyonAzure commented 12 months ago

尝试一下把Lsky连接数据库的IP地址从127.0.0.1改成172.17.0.1试试?

bill1112004 commented 12 months ago

尝试一下把Lsky连接数据库的IP地址从127.0.0.1改成172.17.0.1试试?

搞定,感谢!

HalcyonAzure commented 12 months ago

产生这个问题的原因是因为Lsky-Pro作为一个docker容器运行的时候,127.0.0.1指向的是Lsky-Pro这个容器的IP,而不是群晖本身的IP,而172.17.0.1是群晖默认的Docker网络的IP。如果你希望在127.0.0.1连上数据库的话就需要把MariaDB容器的网络模式改为host,或者就和现在这样通过默认的Docker网桥来连接:wink:。(不是很懂也不要紧,跑起来才是最重要的hhh)

loracc802 commented 3 months ago

127.0.0.1换成docker中数据库容器的名称。最好不要填具体的IP地址,有时候重启IP会变。

chuyegzs commented 3 months ago

这个问题挺奇葩

iNiL0119 commented 1 month ago

产生这个问题的原因是因为Lsky-Pro作为一个docker容器运行的时候,127.0.0.1指向的是Lsky-Pro这个容器的IP,而不是群晖本身的IP,而172.17.0.1是群晖默认的Docker网络的IP。如果你希望在127.0.0.1连上数据库的话就需要把MariaDB容器的网络模式改为host,或者就和现在这样通过默认的Docker网桥来连接:wink:。(不是很懂也不要紧,跑起来才是最重要的hhh)

127.0.0.1 不是主机 ip 吗?docker ip 是172.17.0.1,容器 ip 应该是从 172.17.0.2(第一个安装的容器)、然后是172.17.0.3(第二个容器)...

HalcyonAzure commented 1 month ago

产生这个问题的原因是因为Lsky-Pro作为一个docker容器运行的时候,127.0.0.1指向的是Lsky-Pro这个容器的IP,而不是群晖本身的IP,而172.17.0.1是群晖默认的Docker网络的IP。如果你希望在127.0.0.1连上数据库的话就需要把MariaDB容器的网络模式改为host,或者就和现在这样通过默认的Docker网桥来连接:wink:。(不是很懂也不要紧,跑起来才是最重要的hhh)

127.0.0.1 不是主机 ip 吗?docker ip 是172.17.0.1,容器 ip 应该是从 172.17.0.2(第一个安装的容器)、然后是172.17.0.3(第二个容器)...

你的理解没问题,不过我有点没get到你的问题是?

iNiL0119 commented 1 month ago

产生这个问题的原因是因为Lsky-Pro作为一个docker容器运行的时候,127.0.0.1指向的是Lsky-Pro这个容器的IP,而不是群晖本身的IP,而172.17.0.1是群晖默认的Docker网络的IP。如果你希望在127.0.0.1连上数据库的话就需要把MariaDB容器的网络模式改为host,或者就和现在这样通过默认的Docker网桥来连接:wink:。(不是很懂也不要紧,跑起来才是最重要的hhh)

127.0.0.1 不是主机 ip 吗?docker ip 是172.17.0.1,容器 ip 应该是从 172.17.0.2(第一个安装的容器)、然后是172.17.0.3(第二个容器)...

你的理解没问题,不过我有点没get到你的问题是?

没理解 “127.0.0.1指向的是Lsky-Pro这个容器的IP,而不是群晖本身的IP” 这句

HalcyonAzure commented 1 month ago

没理解 “127.0.0.1指向的是Lsky-Pro这个容器的IP,而不是群晖本身的IP” 这句

这个问题是提问者用bridge的方式创建的mysql容器和lsky容器。并且在lsky容器里面填写的mysql数据库的ip是127.0.0.1,而不是mysql本身的容器Ip,所以出现了无法链接的情况。解决方法是改成容器的ip即可。

iNiL0119 commented 1 month ago

没理解 “127.0.0.1指向的是Lsky-Pro这个容器的IP,而不是群晖本身的IP” 这句

这个问题是提问者用bridge的方式创建的mysql容器和lsky容器。并且在lsky容器里面填写的mysql数据库的ip是127.0.0.1,而不是mysql本身的容器Ip,所以出现了无法链接的情况。解决方法是改成容器的ip即可。

数据库路径不是改成 172.17.0.1 吗,这个是 docker 网络 ip,mysql 容器 ip 不是 172.17.0.x 吗?现在主要就是三个 ip,127.0.0.1、172.17.0.1、172.17.0.x,再加上通过公网ip:3306 连接到数据库,网络这一块不太懂

HalcyonAzure commented 1 month ago

数据库路径不是改成 172.17.0.1 吗,这个是 docker 网络 ip,mysql 容器 ip 不是 172.17.0.x 吗?现在主要就是三个 ip,127.0.0.1、172.17.0.1、172.17.0.x,再加上通过公网ip:3306 连接到数据库,网络这一块不太懂

mysql就是数据库,容器的IP确实是随机的,也就是172.17.0.x。如果你是通过compose部署的甚至还会是172.x.0.x。所以docker在compose中提供了一个叫作hostname字段的能力,可以在你创建容器的时候指定这个容器在docker内的内部域名。在我readme的方案中,因为我设置了mysql-lsky作为数据库的Hostname,所以可以拿这个填在数据库的地址那边。3306是mysql的默认端口。

上述是一些基础知识,如果你的问题是对整一套docker的网络架构,这个可以自己找资料研究下。

iNiL0119 commented 1 month ago

数据库路径不是改成 172.17.0.1 吗,这个是 docker 网络 ip,mysql 容器 ip 不是 172.17.0.x 吗?现在主要就是三个 ip,127.0.0.1、172.17.0.1、172.17.0.x,再加上通过公网ip:3306 连接到数据库,网络这一块不太懂

mysql就是数据库,容器的IP确实是随机的,也就是172.17.0.x。如果你是通过compose部署的甚至还会是172.x.0.x。所以docker在compose中提供了一个叫作hostname字段的能力,可以在你创建容器的时候指定这个容器在docker内的内部域名。在我readme的方案中,因为我设置了mysql-lsky作为数据库的Hostname,所以可以拿这个填在数据库的地址那边。3306是mysql的默认端口。

上述是一些基础知识,如果你的问题是对整一套docker的网络架构,这个可以自己找资料研究下。

还是有点抽象,脑海中想象的是一个个类似集合的东西,lsky 容器要访问 mysql 容器,必须在同一个集合(docker)进行,如果跳出 docker 这个集合(比如使用127.0.0.1)可能有这样那样的限制,因此在配置 lsky 数据库地址的时候填写的是 172.17.0.1,相当于lsky & mysql 当前处于的一个宿主环境,还请指正

iNiL0119 commented 1 month ago

数据库路径不是改成 172.17.0.1 吗,这个是 docker 网络 ip,mysql 容器 ip 不是 172.17.0.x 吗?现在主要就是三个 ip,127.0.0.1、172.17.0.1、172.17.0.x,再加上通过公网ip:3306 连接到数据库,网络这一块不太懂

mysql就是数据库,容器的IP确实是随机的,也就是172.17.0.x。如果你是通过compose部署的甚至还会是172.x.0.x。所以docker在compose中提供了一个叫作hostname字段的能力,可以在你创建容器的时候指定这个容器在docker内的内部域名。在我readme的方案中,因为我设置了mysql-lsky作为数据库的Hostname,所以可以拿这个填在数据库的地址那边。3306是mysql的默认端口。 上述是一些基础知识,如果你的问题是对整一套docker的网络架构,这个可以自己找资料研究下。

还是有点抽象,脑海中想象的是一个个类似集合的东西,lsky 容器要访问 mysql 容器,必须在同一个集合(docker)进行,如果跳出 docker 这个集合(比如使用127.0.0.1)可能有这样那样的限制,因此在配置 lsky 数据库地址的时候填写的是 172.17.0.1,相当于lsky & mysql 当前处于的一个宿主环境,还请指正

类似于家庭网络的概念,同一个网段的设备可以互相通信

HalcyonAzure commented 1 month ago

在油管找了个视频,发现B站有搬运,你可以参考看看。如果还有疑问可以通过邮箱或者Telegram私聊咱~ 在issue下讨论这个是比较容易打扰到别人的=-= https://www.bilibili.com/video/BV1Fk4y1F7Qn