如何解决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}
时,我可以看到容器wordpress
和frontend
都在网络中。但是,当使用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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。