按照 https://docs.qgis.org/3.16/en/docs/server_manual/containerized_deployment.html 上的教程,我已经在 docker 中设置了 qgis 服务器和 nginx。
它适用于他们的示例中指定的示例文件。但是,一旦我将自己的 QgisProjectFile 与连接到 SQLSERVER 数据库的层一起使用,我就会收到以下错误:
<ServerException>Layer(s) not valid</ServerException>
当我查看 qgis 中的内部错误时,我可以清楚地看到只有带有 dbConnection 的层被评估为无效。
这些层在 docker 容器外的我的机器上运行良好。我还尝试了多次更改主机参数:
host.docker.internal:1433
host.docker.internal,1433
192.168.1.233:1433
192.168.1.233,1433
192.168.1.233\sqlexpress
等等。
<layer-tree-layer providerKey="mssql" id="MY_ID" expanded="0" legend_exp="" source="dbname='MY_DB_NAME' host=192.168.1.233,1433 user='MY_USER' srid=2056 type=Point disableInvalidGeometryHandling='0' table="AUE"."TABLENAME"(ADR_ELP_GEOMETRY) sql =" checked="Qt::Unchecked" name="TABLENAME">
用于挂载容器的 Docker 命令:
docker run -d --rm --name qgis-server --net=qgis --hostname=qgis-server -v ${PWD}/data:/data:ro -p 5555:5555 -e "QGIS_PROJECT_FILE=/data/OneAue_DB.qgs" qgis-server
docker run -d --rm --name nginx --net=qgis --hostname=nginx -v ${PWD}/nginx.conf:/etc/nginx/conf.d/default.conf:ro -p 8080:80 nginx:1.13
我也成功 ping 我自己的电脑 (192.168.1.233)。有没有人在这样的设置中成功?