在已部署的docker swarm容器中运行mongo脚本

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

我使用docker swarm部署了一个数据库

docker stack deploy -c docker-compose.yml app

泊坞窗,compose.yml

version: '3.1'
services:
  database:
    image: mongo:latest

我想在部署的script.js容器中从我的主机运行一个JavaScript文件database

docker exec \
    app_database.1.$(docker service ps -f 'name=app_database.1' app_database -q) \
    mongo script.js

但是,容器中不存在文件script.js(仅在我的主机上)。如何在不重新启动database服务的情况下运行它?

mongodb docker docker-swarm
1个回答
3
投票

可以在stdin上将脚本发送到mongo客户端。

在本地创建脚本:

print('The mongodb version is: '+db.version())

然后跑

$ cat script.js | docker exec $container mongo --quiet
The mongodb version is: 3.6.3
© www.soinside.com 2019 - 2024. All rights reserved.