我有两个Web应用程序,它们都是通过域名访问的,nginx作为它们的代理,有两种创建docker-compose.yml文件的方法
webapp1:
image:nodejs
command: node app.js
webapp2:
image:nodejs
command: node app.js
nginx:
image:nginx
ports:
- "80:80"
depends_on:
- webapp1
- webapp2
webapp1
webapp1:
image:nodejs
command: node app.js
webapp2
webapp2:
image:nodejs
command: node app.js
nginx
nginx:
image:nginx
ports:
- "80:80"
哪种方法更好?我更喜欢第二种方法,因为Web应用程序会经常更改,如果我使用第一种方法,则其他应用程序可能会受到影响,第二种方法将不会出现此问题。
如果使用第二种方法,则此处无法使用如何将Nginx与webapp1,webapp2,depends_on
链接。有什么想法吗?
已更新:webapp1和webapp2之间没有关系,我只想在一台服务器上运行它们。
答案 0 :(得分:0)
您应该更喜欢为应用程序及其所有依赖项编写一个if($("#tail").position().top == 382 && $("#tail").position().left == 810)){
alert ('You win');
}
文件。
您注意到,最喜欢这样做的最直接原因是您可以运行一次docker-compose.yml
并获取整个应用程序堆栈。使用单独的Compose文件,不仅每个服务需要运行一次该命令,而且使它们彼此对话的接线非常棘手。
我不会特别担心较大的Compose文件中的部件会影响其他容器堆栈。标准的微服务风格是,不同的服务不应该共享存储,而在Docker中,每个服务都可以直接运行数据库,因此每个Compose文件都应该是完全独立的,并且不应该在一个文件中重新启动(某些)服务。不会影响其他任何地方。
最后,就更改时重新部署容器而言,您的优点是:(a)如果没有任何更改,重新运行docker-compose up
很快,而如果上游依赖项没有更改,则仍然很快( eg ,您的docker build
不变),并且(b)重新运行package.json
仅会影响以某种方式更改的容器。如果你举个例子
docker-compose up -d
不会影响未更改的数据库容器之类的东西,并且如果您没有更改某些特定的应用程序组件,它仍将被重建,但最终将显示相同的映像。