【发布时间】:2019-06-28 01:19:11
【问题描述】:
我正在使用 docker-compose 为前端、后端和 mongo 实例创建 3 个不同的容器。其中 3 个正在运行并在它们之间连接,但是一旦 mongo 实例运行,我需要在 DB 上创建一个管理员用户。根据 mongo 图像文档,位于 docker-entrypoint-initdb.d 的每个脚本都应在创建实例后运行。正如我已经说过的,我正在使用 docker compose,所以 mongo 没有 Dockerfile,只是使用官方 mongo 映像的服务,所以我为这个文件设置了一个卷 [不知道是否因为这个脚本不是正在运行,因为是符号链接而不是复制的文件]。所以我尝试运行一个命令来运行这个脚本,但它不起作用,但是如果我对 mongodb 实例执行docker exec 并自己运行脚本,它将起作用并创建管理员用户。
那么,我怎样才能让这个脚本在实例创建后运行呢?
这是我的docker-compose.yml 文件
mongodb:
container_name: mongodb
image: mongo
command: /bin/bash "cd /docker-entrypoint-initdb.d && mongo-init.sh"
networks:
- backend-network
volumes:
- './db:/data/db'
- './mongo-init.sh:/docker-entrypoint-initdb.d/mongo-init.sh'
tty: true
restart: always
【问题讨论】: