为我的论文做一个项目,涉及一个有角度的前端,该前端与一个节点API后端进行通信,该节点需要使用docker从图像创建容器,为控制台输出运行了几行代码。
我已经使用docker-compose为前端和后端创建两个docker容器。
我的后端(api)容器需要一种使用dockerode连接到docker的方法,但我不确定如何执行此操作。
version: "3"
services:
app:
build: ./frontend
ports:
- "3001:4200"
volumes:
- ./frontend:/code
depends_on:
- api
api:
build: ./backend
ports:
- "3000:8080"
volumes:
- ./backend:/code
我已经尝试过:
1在主机(Windows 10)上使用docker-machine,但是每当我尝试通过dockerode从docker容器(后端)进行连接时'ReferenceError:docker not defined',但不确定docker-machine是否在其上正确运行我的主机,就像我在Windows 10上使用hyper-v。
const docker = new Docker({host: 'http://192.168.0.23', port: 3000});
2将docker安装到每次都失败的docker容器中,并且成功安装后,它不会将'docker'识别为在系统上运行。
3将docker映像添加到docker-compose文件中,因为我认为那行得通?对我来说,不,但不知道这是否是由于网络连接而不是docker镜像的预期用途
docker:
image: docker
ports:
- "2376:2376"
stdin_open: true
tty: true
volumes:
- /var/run/docker.sock:/var/run/docker.sock
我对Docker尤其是网络方面还很陌生,一直在研究docker-machine,docker-swarm和Kubernetes之类的东西来寻找最佳解决方案。
对此的任何见解都将不胜感激,因为此项目的最大障碍是让我的后端API与部署环境中的Docker进行对话。