Tag: 数据库连接

多个Docker容器共享一个数据库

我有一个包含三个小型Spring Boot应用程序的系统,每个应用程序都有一个不同的用途,其中包含REST端点。 这三个应用程序都是为了处理同一个数据库(MariaDB)。 目前,该系统作为四个独立的docker工作。 三个应用程序的三个docker容器,MariaDB的第四个容器(基于MariaDB Docker镜像)。 所有三个应用程序容器都使用–linknetworking模式连接到数据库容器。 在代码中,使用Spring Data Database Managerbuild立连接(注意:MariaDB容器被称为mariadb): DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setUrl("jdbc:mariadb://mariadb:3306/fi"); dataSource.setUsername("myUsername"); dataSource.setPassword("myPassword"); 这一切都按预期工作,但我注意到有很多人在堆栈溢出和类似的网站上说,在docker运行数据库是不理想的,不应该做生产。 尽pipe每个人似乎都同意这一点,但我还没有find具体的意见或教程来说明如何完成我所要做的事情。 最好,我希望在主机上运行MariaDB(一台机器托pipe所有的docker),并让每个docker都能够连接到主机。 我以前试过这个没有成功,总是无法连接到主机上的任何东西。 我最近尝试这样做需要build立一个docker集装箱,如下所示: Docker run -i -t –add-host="localhost:my.host.ip" -p 8080:8080 –name awesomeName javaimage /bin/bash 我find的这个页面是一个给我一个类似问题的人的答案,那个片段的作者宣称你可以使用localhost调用主机上的链接,就好像运行在我的docker中的Spring App在主机上运行一样机。 使用这个–add-host容器,我试图连接到主机上的数据库,如下所示: DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setUrl("jdbc:mariadb://localhost:3306/fi"); dataSource.setUsername("myUsername"); dataSource.setPassword("myPassword"); 尝试获取此连接失败,出现错误“无法连接到地址=(host = localhost)(port = 3308)(type = master):连接被拒绝”。 请注意,如果我直接在主机上运行应用程序,这些相同的证书和获取连接的方法就可以工作。 总而言之,我目前的Spring […]

在docker容器中运行的Solr没有连接到PostgreSQL数据库

我有一个Docker容器中的PostgreSQL和Solr,运行在同一台机器上。 我正在尝试从Postgres进入Solr的数据导入,但我收到错误。 以下是日志的相关部分: Full Import failed:java.lang.RuntimeException: java.lang.RuntimeException: org.apache.solr.handler.dataimport.DataImportHandlerException: Unable to execute query: SELECT * FROM formulas org.postgresql.util.PSQLException: Connection to 127.0.0.1:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections. 基本上连接被拒绝/从来没有做,但我很困惑。 netstat -nltp 产量 tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 772/sshd tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 1822/postgres […]

无法连接到Docker中的MySQL服务器

首先我运行mysql image: docker run -e MYSQL_ROOT_PASSWORD=password -d -p 127.0.0.1:3308:3306 mysql 然后我使用容器bash(其中big_golick是一个随机的,由big_golick本身分配给容器): docker exec -it big_golick bash 在Bash中,我可以通过命令成功连接到MySQL服务器: mysql -uroot -ppassword 但是当我尝试从Windows cmd连接到MySQL容器时: mysql -uroot -ppassword -h127.0.0.1 -P3308 ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (10061) 如果我连接到192.168.99.100而不是(这个IP是由docker-machine ip返回的),那么结果是一样的。 问题是:如何正确地将我的Docker内部的MySQL端口暴露给外部Windows?

为什么oracle连接在mac os sierra上打开这么慢?

我使用oracle-xe-11g映像工作在Docker上。 当我通过ssh连接到Docker容器时,连接立即build立。 但是当我想使用localhost:49162(端口转发到容器的1521)连接到oracle数据库时,大约需要15 – 25秒来打开每个连接。 如果使用JDBC连接或SQLDeveloper,则无关紧要。 我已经读过,这个问题可能与DNS解决scheme有关,但我无法find任何足够的解决scheme。 缓慢的DNS查询 我的主机文件: 127.0.0.1 localhost 255.255.255.255 broadcasthost ::1 localhost 我的resolv.conf: search home nameserver 62.179.1.60 nameserver 62.179.1.61 系统版本:macOS Sierra 10.12.3。 有人遇到类似的问题吗?