【发布时间】:2018-08-14 08:35:18
【问题描述】:
我正在设置一个 Spatialite 数据库(SQLite + Spatialite 扩展)和一个相关的 Go 程序,该程序在 docker 容器中运行,用于查询数据库并返回数据。
Go-spatialite,据我了解,它会在运行时动态加载空间库以查询数据库。在本地运行 Go 程序并使用 Postman 查询服务时一切正常。
但是,当使用容器时,Go程序找不到spatialite扩展:
"error":"shaxbee/go-spatialite: spatialite extension not found."
我使用go-spatialite (shaxbee) package 和database/sql 包。我已经在本地安装了 Spatialite。
我这样打开数据库连接:
db, err := sql.Open("spatialite", "path/to/my/db")
if err != nil {
logVar.WithError(err).Fatal("Impossible to open database")
}
if err := db.Ping(); err != nil {
logVar.WithError(err).Fatal("Cannot connect to database")
}
我使用这个Dockerfile 来调整我的(基于 alpine-glibc),以便在图像构建期间安装 Spatialite 库。根据Spatialite package,它会寻找不同的空间库并加载它。
在容器中检查/usr/local/lib/时,库就在那里:
libspatialite.a
libspatialite.la
libspatialite.so
libspatialite.so.7
libspatialite.so.7.1.0
libsqlite3.so
libsqlite3.so.0
libsqlite3.so.0.8.6
在我看来,该程序不知道从哪里获取这些库。你有什么想法 ?
谢谢
【问题讨论】:
标签: sqlite docker go dynamic-library spatialite