如果您只想在 vps 上运行 GeoNode 而没有别的,您可以 geonode/nginx:geoserver从您链接的 docker compose 文件中公开端口 80。设置 repo 中的基础的方式docker-compose.yml是它将从主机上的容器公开端口 80 - 就像您启动 nginx 或 apache 以侦听该服务器上所有接口上的端口 80 一样。之后,您将能够使用来自 vps 的公共 IP 地址从客户端连接。
如果您想使用 docker-compose 在同一主机上运行多个不同的服务,您将需要某种代理来将不同的子域“路由”到不同的容器。您可以通过安装在 vps 本身上的经典 nginx 或类似此图像的东西来实现这一点。对于使用 nginx 的“经典”方式,您需要对文件的ports配置进行一些调整,以docker-compose.yml仅在主机上公开端口。像这样的东西:
...
geonode:
image: geonode/nginx:geoserver
...
ports:
- "127.0.0.1:8081:80"
...
这将使80容器内部的端口8081在主机上的端口上可用,但仅在本地接口上可用。然后,您将需要 nginx 之类的东西将来自外部世界的请求代理到127.0.0.1:8081.
如果您没有另外配置它,docker 守护进程会在本地套接字上侦听,而不是在 ip 上,因此将 docker 映像中的端口公开给“外部世界”是安全的。