我开始习惯使用Docker构建环境开发应用程序。
我有一台物理服务器,我可以使用Apache为几个(本地安装的)Web应用程序提供服务。
Apache listening on 80
sites-available
app1 -> locally installed in /apps/app1
app2 -> locally installed in /apps/app2
...
现在,我已经为我的应用程序准备了一个带有Docker的全栈生产环境。我想在本地安装的应用程序旁边的旧服务器中插入它:
Apache listening on 80
sites-available
app1 -> locally installed in /apps/app1
app2 -> locally installed in /apps/app2
app3 -> proxy to the related Docker service
...
逐步将我的其他现有应用程序Docker化。
主要问题是:
我是否每次都必须在专用端口中公开我的dockerized服务?
是否有一些我不知道的网络技术可以用来最终代理在同一台机器上运行的多个服务?
你还能指点我一些Apache代理示例吗?
最终,当我有独家代理时,我会打开Nginx。
答案 0 :(得分:1)
在Docker中,公开特定容器的首选方法是使用专用端口。有多种方法可以直接连接到容器,尤其是当您在同一台计算机上运行时,但是如果重建容器,则会遇到尝试跟踪容器当前IP的挑战。
对于您的方案,我建议在容器中放置第二个代理。由于它作为容器运行,因此可以按名称连接到每个其他容器。我个人最喜欢的实现是nginx-proxy,它监听docker socket的容器启动和停止以自动更新它的配置。
然后,一旦完成迁移到容器,您可以在关闭现有的apache代理进程时在nginx代理上添加另一个侦听端口。