我有一台服务器和nginx一起在自己的docker容器中运行一个网站。我有一台完全独立的服务器在容器内运行postgres。
如何在两台服务器之间进行通信,以便第一台服务器上的网站可以使用第二台服务器上的数据库?
这在本地可以正常工作,因为我可以使用docker compose并在同一个docker网络上启动所有内容。另外,我也可以分别启动容器,并指定一个外部网络供它们使用,这又可以正常工作。但是,我不确定如何在不同的服务器(vps)上使这些工作全部投入生产。
我知道像Kubernetes这样的东西可以帮助解决这个问题,但是我没有经验,因此宁愿避免这种情况,同时又要尽可能简单/香草。这仅用于个人项目,我的技能在于发展,而不是发展。
答案 0 :(得分:1)
您将以与数据库在远程主机上运行而不是在Docker中运行完全相同的方式设置容器:使用其他主机名作为数据库主机以及相应的数据库名称,登录凭据, &C。您需要确保将数据库容器配置为允许外部连接(适当时使用docker run -p 3306:3306
或-p 5432:5432
选项);它不一定在单主机Docker Compose设置中。
作为一个更笼统的问题,如果给定的客户端和服务器位于单独的主机上,即使它们都在Docker中,Docker本身也不会提供很多具体帮助。您可以将事物配置为仅使用物理主机名,而忽略Docker空间,并在移动工作负载时重新部署。您可以部署Consul之类的服务注册表,该服务注册表知道服务在哪里运行并可以告知客户端;或set up an overlay network(也可以购买Docker的Swarm容器协调器)。这也与您部署工作负载的方式有关,如果您使用的是Ansible,或者可以容忍安装全面的集群管理器,或者坚持只使用docker run
或{{1 }}命令。