1

我正在尝试在 VPS 上运行 GeoNode,并使用 docker-compose 将其公开到互联网上。

docker-compose 上的GeoNode 教程对在本地运行它有非常明确的说明。它还有在 docker IP 上运行它的说明,如果我理解正确,这在生产中不是一个好主意,因为那是 docker 守护进程监听的 IP,所以我不想公开它。

那么,在一台机器上运行 GeoNode、运行 Ubuntu、使用 docker-compose 有什么好的设置呢?

虽然我以前玩过 docker,但我对它很陌生,所以我可能只是误解了一些东西。

4

1 回答 1

1

如果您只想在 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 映像中的端口公开给“外部世界”是安全的。

于 2019-03-22T21:29:16.990 回答