Visual Studio Docker Compose - 在调试会话结束后停止并删除容器

问题描述 投票:0回答:1

我有一个 ASP.NET Core Web 应用程序,我已将日志记录添加到 ElasticSearch 和 Kibana。
我在 Windows 主机上运行它,容器是 Linux。

docker-compose 文件设置为首先启动 elastic search,然后是 kibana,最后是 Web 应用程序 - 如下所示:

version: '3.4'

services:
  
  elasticsearch:
    container_name: elasticsearch
    image: docker.elastic.co/elasticsearch/elasticsearch:7.9.2
    ports:
      - 9200:9200
    volumes:
      - elasticsearch-data:/usr/share/elasticsearch/data
    environment:
      - xpack.monitoring.enabled=true
      - xpack.watcher.enabled=false
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - discovery.type=single-node
    networks:
      - elastic

  kibana:
    container_name: kibana
    image: docker.elastic.co/kibana/kibana:7.9.2
    ports:
      - 5601:5601
    depends_on:
      - elasticsearch
    environment:
      - ELASTICSEARCH_URL=http://localhost:9200
    networks:
      - elastic

  hyena.webapp:
    image: ${DOCKER_REGISTRY-}hyena_image
    build:
      context: .
      dockerfile: Hyena.WebApp/Dockerfile
    ports:
      - "5001:443"
      - "5000:80"
    container_name: "hyena_container" 
    volumes:
      - type: bind
        source: /c/docker/hyena
        target: /data
    environment:
      - ELASTICSEARCH_URL=http://elasticsearch:9200
    networks:
    - elastic

networks:
  elastic:
    driver: bridge

volumes:
  elasticsearch-data:

当我点击“调试”(F5) 时,VS 启动一切,我可以在 Docker Desktop 中看到容器正在运行,并且可以看到应用程序相互通信(即来自 Web 应用程序的日志出现在 Kibana 中)。

enter image description here

现在,当我停止 Visual Studio 调试时,我的 Web 应用程序无法再通过浏览器访问,但 ElasticSearch 和 Kibana 仍继续工作。

Docker 桌面和

docker container ls
命令都显示容器正在运行。

所以,我的问题是:

  1. 如果容器正在运行,为什么我无法再访问我的 Web 应用程序?
  2. 为什么它只发生在我的网络应用程序中,而不发生在 Kibana 或 ElasticSearch 中?
  3. 如何让 VS 在调试会话后停止并删除这些容器?

亲切的问候, 巴托斯

docker asp.net-core elasticsearch docker-compose
1个回答
0
投票

1.) 嗯。当您使用调试器工具时,它很可能会安装端口或附加“远程调试器”或线程。

2.) 如果端口由 IDE 管理,那么如果您在 IDE 中停止调试器,该端口将不可用

3.)它可能在应用程序设置中以这种方式配置,以关闭容器/卷,无论是否悬空

© www.soinside.com 2019 - 2024. All rights reserved.