我正在尝试在VPS上运行GeoNode,并使用docker-compose将其暴露到互联网。
GeoNode tutorial on docker-compose有关于在本地运行它的相当明确的指示。它还有在docker IP上运行它的说明,如果我理解正确,在生产中不是一个好主意,因为这是docker守护程序监听的IP,所以我不想暴露它。
那么使用docker-compose在一台机器上运行GeoNode,运行Ubuntu有什么好的设置呢?
虽然我以前玩过码头工具,但我很陌生,所以我可能只是误解了一些东西。
如果您只想在vps上运行GeoNode而没有其他任何东西,您可以从您链接的docker compose文件中公开端口80 geonode/nginx:geoserver
。设置repo中的基础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镜像端口暴露给“外部世界”是安全的。