我正在尝试在VPS上运行GeoNode,并使用docker-compose将其公开到互联网。
GeoNode tutorial on docker-compose对于在本地运行它有非常明确的说明。它也有在docker IP上运行它的说明,如果我正确理解的话,这在生产中不是一个好主意,因为那是docker守护进程监听的IP,所以我不想公开它。 >
那么,使用docker-compose在运行Ubuntu的单台计算机上运行GeoNode的最佳设置是什么?
虽然我以前玩过docker,但我对它还很陌生,所以我可能只是误会了一些东西。
答案 0 :(得分:0)
如果只想在vps上运行GeoNode,而没有其他任何操作,则可以从链接的docker compose文件中公开端口80 geonode/nginx:geoserver
。在仓库中设置基础docker-compose.yml
的方式是,它将从主机上的容器暴露端口80-就像启动Nginx或apache监听所有接口上的端口80一样在该服务器上。之后,您将能够使用vps中的公共IP地址从客户端进行连接。
如果要使用docker-compose在同一主机上运行多个不同的服务,则需要某种代理才能将不同的子域“路由”到不同的容器。您可以通过在vps本身上安装经典的nginx或类似this image的方式来实现。对于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映像公开到“外部世界”。