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

Bar*_*osz 5 elasticsearch docker docker-compose asp.net-core

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

docker-compose 文件设置为首先启动弹性搜索,然后是 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:
Run Code Online (Sandbox Code Playgroud)

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

在此处输入图片说明

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

Docker 桌面和docker container ls命令都显示容器正在运行。

所以,我的问题是:

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

亲切的问候,巴托斯