CircleCI有配置。在本地机器上,当你运行 CircleCI 时,一切都会过去。在这种情况下,服务器出现了很多错误,其中之一是
java.lang.IllegalStateException: Can not connect to Ryuk
同时将来在较早启动的容器中连接测试时出现错误test-containers
,我认为这是由于连接到Ryuk
. 混淆了在本地机器上一切正常而在服务器上一切都失败的事实。
问题的原因在这里:https ://gist.github.com/OlegGorj/52ca84624503a5e85624c6eb38df4590 其中说:环境分离作业和远程docker在不同的环境中运行。因此,Docker 容器无法直接与远程 docker 中运行的容器进行通信。
访问服务 在远程 docker 中启动服务并直接从主容器 ping 它是不可能的(反之亦然)。
似乎有三个选项:
有关选项 3 的更多详细信息
基本上,在使用circleci时不要使用testcontainers(一个词)。在您的 circleci/config.yaml 中执行以下操作:
jobs:
build:
docker:
- image: circleci/openjdk:14.0.1-jdk-buster
- image: rabbitmq:3.8-alpine
environment:
因此 circleci 在与您的图像相同的主机上运行 rabbit 容器。然后,您可以在它打开的任何端口上与它在 localhost 上进行通信,并且当您的构建(始终在第一个容器中)完成时,circleci 将关闭这些辅助容器。
这样做有几个缺点: