Docker-Compose:如何依赖另一个网络上的容器?即使网络已链接,我仍然收到一个错误消息,说容器“未定义”

问题描述

我在2个不同位置的2个不同的docker-compose.yml文件中提供2个不同的服务。

服务1:wordpress

version: "3.7"

services:

  # Wordpress
  wordpress:
    depends_on:
      - db
    container_name: wordpress
    image: wordpress:latest
    ports:
      - '8000:80'
    restart: unless-stopped
    volumes: ['./:/var/www/html']
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
    networks:
      - wpsite
networks:
  wpsite:
    driver: bridge

服务2:前端

version: "3.7"

services:
  frontend:
    depends_on:
      - wordpress
    container_name: frontend
    restart: unless-stopped
    stdin_open: true
    build:
      context: ../realm-frontend
    volumes:
      - static:/realm-frontend/build
    networks:
      - cms_wpsite

networks:
  cms_wpsite:
    external: true

我有一个shell脚本,该脚本可以转到2个位置并运行docker-compose文件来创建容器。

脚本

cd ~/cms;
docker-compose -f docker-compose.yml up -d --build --force-recreate

cd ../frontend;
docker-compose -f docker-compose.yml up -d --build --force-recreate

如您所见,我已经使用网桥创建了网络之间的链接。

当我docker network inspect {network id}时,我可以看到容器wordpressfrontend都在网络中。但是,当使用depends_on命令创建第二个容器时,出现以下错误。

ERROR: Service 'frontend' depends on service 'wordpress' which is undefined.

由于他们处于同一网络中,因此我不确定为什么会这样。

我将不胜感激。谢谢!

解决方法

我认为你在那里误会了。

depends_on:仅在docker-compose文件中起作用,并且仅说明启动和停止容器的顺序。

https://docs.docker.com/compose/compose-file/#depends_on

,

Depends_on仅适用于同一撰写文件中的服务,因此,要执行所需的操作,您将需要使用诸如wait-for-it.sh之类的东西。在此处查看更多信息:https://docs.docker.com/compose/startup-order/

类似的方法可能对您有用,或者您也可以创建自定义的等待脚本:

services:
  frontend:
    container_name: frontend
    restart: unless-stopped
    stdin_open: true
    build:
      context: ../realm-frontend
    volumes:
      - static:/realm-frontend/build
    command: ["./wait-for-it.sh","wordpress:80","--","yourfrontendcmd"]
    networks:
      - cms_wpsite

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...