我有一个mydb.fdb
文件,如何将其加载到docker容器中,然后从python连接到它。我在docker-compose中执行以下操作:
version: '2'
services:
firebird:
image: jacobalberty/firebird
environment:
ISC_PASSWORD: pass
volumes:
- ./database:/databases
然后我这样做:
docker exec -it <container-id> bin/bash
我在容器的.fdb
文件夹中看到我的/databases
文件,但是当我在容器中执行命令时:
cd /usr/local/firebird/bin
./isql
SQL> CONNECT "/databases/mydb.FDB" user sysdba password masterkey;
我收到了:
在/ databases / mydb位置使用数据库。服务器配置不允许FDB
而且我也不明白如何通过fdb python module连接到该数据库。我这样做:
import fdb
con = fdb.connect(
host='0.0.0.0',
port='3050',
database='mydb.FDB',
user='sysdba',
password='masterkey')
并收到:
raise Exception(“ Firebird客户端库的位置不能为 确定。”
答案 0 :(得分:2)
您的问题中有两个不同的问题,将来,请确保将其作为单独的问题进行询问。
关于您的第一个问题,默认情况下,Firebird docker映像的设置期望数据库位于位置/firebird/data
中,并显式配置Firebird以仅限制对该位置的访问。如果要使用其他位置,则必须将环境变量DBPATH
设置为正确的路径。另请参阅图像的issue 12,Dockerfile和build.sh。该选项似乎没有记录;我在那张票上留下了评论。
关于第二个问题,它分为两个部分。一,您不能使用0.0.0.0进行连接,这只是“此主机的所有IP地址”的简写,它只能在侦听连接时使用,而不能在连接时使用。从运行docker的计算机连接时,需要使用127.0.0.1或localhost。
最重要的是,该错误表明您没有安装Firebird本机客户端。 FDB驱动程序需要fbclient.dll
(Windows)或libfbclients.so
(Linux)。您要么需要安装Firebird本机客户端,要么切换到pyfirebirdsql,它是纯Python中的Firebird驱动程序(它在Python中实现了Firebird协议)。