我有一个多容器项目,由3个NestJS和1个dotnet5.0应用程序组成。除了这些应用程序之外,该项目还依赖于RabbitMQ和InfluxDB服务(作为纯Docker镜像运行)
docker-compose
文件如下所示:
version: '3.8'
services:
influxdb:
image: influxdb:2.0
container_name: influxdb
ports:
- '8086:8086'
expose:
- '8086'
volumes:
- ./data/influxdb2/data:/var/lib/influxdb2
- ./data/influxdb2/config:/etc/influxdb2
rabbitmq:
hostname: 'rabbitmq'
image: rabbitmq:3-management
container_name: rabbitmq
ports:
- '15672:15672'
- '5672:5672'
microservice1:
image: microservice1
container_name: microservice1
depends_on: [rabbitmq, influxdb]
build:
context: .
dockerfile: ./apps/microservice1/Dockerfile
microservice2:
image: microservice2
container_name: microservice2
depends_on: [rabbitmq, influxdb]
build:
context: .
dockerfile: ./apps/microservice2/Dockerfile
microservice3:
image: microservice3
container_name: microservice3
depends_on: [rabbitmq, influxdb]
build:
context: .
dockerfile: ./apps/microservice3/Dockerfile
microservice4:
image: microservice4
container_name: microservice4
depends_on: [rabbitmq, influxdb]
build:
context: .
dockerfile: ./apps/microservice4/Dockerfile
我希望将整个开发环境迁移到新的VS Code devcontainers,但我不太清楚如何处理依赖项(比如这里的rabbitmq和influxdb)。
理想情况下,我会在一个同时包含nodejs和dotnet SDK的devcontainer中打开仓库,以便在开发过程中运行微服务。但是,我不想在devcontainer中安装influxdb和rabbitmq,因为我想利用现有的(方便的)docker镜像。
问题是,一旦我在devcontainer内部打开了仓库,就无法从内部与docker-compose交互(因为docker/docker-compose在devcontainer内不可用)。
是否可能从容器内部与主机上的Docker引擎进行交互?这样我就可以简单地拥有一个dev.sh
脚本,可以简单地启动rabbitmq和influxdb依赖项,然后启动我想要运行的任何微服务吗?
也许我弄错了,但我找不到一个清晰的解释,说明如何混合使用VS Code devcontainers和基于镜像的docker-compose文件。