我有两个Docker容器,一个带有Apache(+ PHP),另一个带有PostgreSQL(+ PostGIS,这是 PostgreSQL 数据库的空间扩展)。
PostGIS 有一个二进制文件(shp2pgsql)可以将 shapefile 数据转换为 SQL 指令。当我需要执行此操作时,我运行以下命令:
在特定情况下,当用户上传shapefile(在apache+php容器中)时,我需要在PostgreSQL+PostGIS容器中运行shp2pgsql。
我已经尝试过:
- 将docker守护程序暴露给Apache docker容器,并使用docker exec命令调用二进制文件shp2pgsql,但是由于apache用户(调用docker exec的用户)没有权限,因此没有成功。 - 共享PostgreSQL容器中的“/usr/bin/”卷到Apache容器中,但没有成功,因为二进制文件(shp2pgsql)与其他库(在其他文件夹中)有依赖关系。
是否有一种优雅(或不优雅)且可行的方法来解决这个问题?还有其他的解决方案吗?
欢迎任何建议或想法。
PostGIS 有一个二进制文件(shp2pgsql)可以将 shapefile 数据转换为 SQL 指令。当我需要执行此操作时,我运行以下命令:
/usr/bin/shp2pgsql {...arguments...} filename.shp > insql.sql
在特定情况下,当用户上传shapefile(在apache+php容器中)时,我需要在PostgreSQL+PostGIS容器中运行shp2pgsql。
我已经尝试过:
- 将docker守护程序暴露给Apache docker容器,并使用docker exec命令调用二进制文件shp2pgsql,但是由于apache用户(调用docker exec的用户)没有权限,因此没有成功。 - 共享PostgreSQL容器中的“/usr/bin/”卷到Apache容器中,但没有成功,因为二进制文件(shp2pgsql)与其他库(在其他文件夹中)有依赖关系。
是否有一种优雅(或不优雅)且可行的方法来解决这个问题?还有其他的解决方案吗?
欢迎任何建议或想法。