我尝试使用Confluence创建服务,使用JIRA创建服务。
我已经创建了一个网络:
docker network create --driver bridge atlassian_stack
并在该网络上发布了一个容器,一个暴露端口8080,另一个暴露8090:
docker run -it --detach --publish 8080:8080 --net=atlassian_stack --name JIRA cptactionhank/atlassian-jira-software:latest
docker run -it --detach --publish 8090:8090 --net=atlassian_stack --name CONFLUENCE cptactionhank/atlassian-confluence:eap
我可以在http://localhost:8080
(JIRA)和http://localhost:8090
(Confluence)本地访问。
但是,将应用程序链接在一起需要Atlassian产品中的硬编码IP。 Confluence想知道JIRA所在的位置和vica verca。它似乎没有在上述IP地址上看到对方(这是有意义的),因为它抱怨未解析的DNS。
问题是:当应用程序需要硬编码的DNS / IP,并且它们位于同一网络中时,如何正确地将它们相互引用?
答案 0 :(得分:2)
当多个容器共享一个公共网络时,每个容器都可以使用容器name
解析任何其他容器(在同一网络上)。
所以在你的情况下,你应该能够运行docker exec -it JIRA ping CONFLUENCE
和docker exec -it CONFLUENCE ping JIRA
假设ping
在这些容器中可用,如果没有,你可以执行/附加一个shell并安装所需的网络工具(ping
,telnet
,nc
等)[docker exec -it JIRA sh
,然后在#
提示符,yum install telnet -y
或{{ 1}}取决于基本图像的特定发行版。]
如果你只能使用ip地址(而不是主机名/名称),那么你需要在Confluence启动时通过运行apt instal -y
或类似的东西来获取它。一个例子如下:
nslookup jira