我们有存储库,里面有一个用Angular编写的应用程序。它需要一个带有nginx的docker容器来托管。nodejs 需要一个 nodejs 的 docker 容器,所以我们的应用程序将被分成 2 个容器,这些容器将被链接。
因此,要编写 2 个 docker文件(每个映像一个),我们必须在存储库中拆分我们的文件夹,如下所示:
-
根
-
Angular :包含 nginx 的 dockerfile
-
NodeJS : 包含 dockerfile for nodejs
-
但问题是他们都需要package.json。(Angular 表示 devdependencies,NodeJS 表示依赖项)。
存储库中最适合您的应用程序的结构是什么?
如果你愿意,Nginx 和 Nodejs 容器可以在 Docker Compose 中共享一个卷。您可以使用 volumes_from 参数。它将从另一个服务或容器挂载所有卷,可以选择指定只读访问 (ro) 或读写 (rw)。https://docs.docker.com/compose/compose-file/
volumes_from:
- service_name
- container_name
- service_name:rw
在您的情况下,package.json 可以位于 Nodejs 容器中,但也可以由 Nginx 容器使用此参数访问。