访问位于同一网络的另一个docker-compose文件中的服务名



我正在尝试建立一个主要的docker-compose文件,其中包含数据库,firebase认证,pubsub模拟器等。这个主文件位于父目录中,每个子文件夹中都有docker-compose文件。我正在遵循微服务架构,但不想要单个大的组合文件,因为微服务的数量超过50,最终会使用大量资源。所以我已经设法在相同的docker网络下创建文件,但我现在面临的问题是,我不能在子文件夹docker-compose文件内的父文件夹docker-compose文件中使用服务的名称。

下面是父文件夹中docker-compose服务的示例:

postgres_db:
image: postgres:latest
restart: always
environment:
- POSTGRES_PASSWORD=postgrespw
ports:
- "5432:5432"
volumes:
- postgres:/var/lib/postgresql/data

下面是子文件夹中docker-compose服务的一个例子:

service_1:
build:
context: ../../
dockerfile: ./services/service_1/Dockerfile.dev
target: development
restart: always
environment:
- DATABASE_URL=postgresql+psycopg2://postgres:postgrespw@postgres_db:5432/localdb
- PORT=8080
ports:
- "8080:8080"
volumes:
- ../../lib/:/app/lib
- ../../services/service_1/:/app
depends_on:
- postgres_db

这会抛出以下错误:

服务"service_1"依赖于未定义的服务postgres_db: invalid撰写项目

我需要能够在子docker-compose文件中使用父docker-compose文件的服务名称。

不能从另一个撰写文件引用信息。"depends_on"必须是同一个文件中引用的服务

如果您试图在撰写中运行堆栈的子部分,您可能需要尝试使用"配置文件"。docker撰写特性。撰写文件仍然很大,但您不必一次运行所有已定义的服务。

depends_on的目的是在单个组合文件中处理容器依赖关系,并根据它们的依赖关系按顺序显示容器

你不能在你的撰写文件之间使用它们。

你需要在你的应用程序流中处理它,或者为你的容器写一个入口点脚本,在启动你的应用程序之前检查你的应用程序所依赖的后台服务是否可访问。

相关内容

  • 没有找到相关文章

最新更新