Docker Compose-成功重启后外部链接失败

时间:2019-01-08 12:08:26

标签: docker docker-compose external-links

情况是这样的: 我有三个不同的泊坞窗为三个不同的项目编写文件:前端,中间件和后端。 FE是Ember,中间件和后端spring(引导)。虽然这在这里不重要。中间件使用到后端的external_link,前端(UI)使用到中间件的external_link。

当我从一个干净的docker开始时(docker stop $(docker ps -aq),docker rm $(docker ps -aq)),一切正常:我先用docker-compose up后端,然后是中间件,然后前端。一切都很好,所有外部链接都可以正常工作(也可以在此设置上运行赛普拉斯e2e测试-正常)。

现在,当我在中间件中进行某些更改时,重建映像,停止容器(control + c),然后使用docker-compose up重新启动它,然后尝试重新启动前端(control + c,然后重新启动docker-compose)起来),码头工人会告诉我:

Starting UI ... error

    ERROR: for UI  Cannot start service ui: Cannot link to a non running container: /32f2db8e96a1_middleware AS /ui/backend

    ERROR: for UI  Cannot start service ui: Cannot link to a non running container: /32f2db8e96a1_middleware AS /ui/backend
    ERROR: Encountered errors while bringing up the project.

现在让我烦恼的是: “ 32f2db8e96a1”来自哪里?中间件容器名称设置为“中间件”,该名称也用在UI的外部链接中,并且对于每次干净启动都可以正常工作(这意味着之前使用docker rm“ -all”)。另外,docker ps向我展示了中间件容器实际上正在运行。

很遗憾,我无法在此处发布撰写文件,但我愿意添加所需的任何信息。

在Docker 18.09.0版上运行,构建4d60db4 Ubuntu 18.04.1 LTS

我想在不断开外部链接的情况下重新启动任何这些容器。我该如何实现?

由于你们都花时间陪伴我,所以我花时间清理了其中的两个。这是UI /前端之一:

files:
version: '2.1'

services:

  ui:
    container_name: x-ui
    build:
      dockerfile: Dockerfile
      context: .
    image: "xxx/ui:latest"
    external_links:
      - "middleware:backend"
    ports:
      - "127.0.0.1:4200:80"
    network_mode: bridge

这是中间件:

version: '2.1'

services:

  middleware:
    container_name: x-middleware
    image: xxx/middleware:latest
    build:
      dockerfile: src/main/docker/middleware/Dockerfile
      context: .
    ports:
      - "127.0.0.1:8080:8080"
      - "127.0.0.1:9003:9000"
    external_links:
      - "api"
    network_mode: "bridge"

“ api”基本上与中间件相同。

请注意:我删除了卷和环境。我也重命名了,以便错误消息名称不能完美地适合。请注意,命名模式是相同的:服务名称类似于“中间件”,容器名称使用前缀“ x-中间件”。

0 个答案:

没有答案