创建后mongo docker映像未运行脚本

时间:2019-06-28 01:19:11

标签: mongodb docker

我正在使用docker-compose为前端,后端和mongo实例创建3个不同的容器。它们中的3个正在运行并在它们之间连接,但是我需要在mongo实例运行后立即在数据库上创建一个管理员用户。根据mongo image文档,应在实例创建后运行docker-entrypoint-initdb.d上的每个脚本。正如我已经说过的那样,我正在使用docker compose,因此mongo没有Dockerfile,只有使用正式mongo映像的服务,因此我已经为此文件设置了一个卷[不知道是否因为该脚本未运行,因为是符号链接而不是复制的文件]。因此,我尝试运行命令来运行此脚本,但是它不起作用,但是如果我对mongodb实例执行docker exec并由我自己运行该脚本,它将可以工作并创建admin用户。

那么,如何在创建实例后使该脚本运行?

这是我的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

1 个答案:

答案 0 :(得分:1)

您不需要修改mongo命令,因为它将导致mongodb容器出现问题。通过定义command,您将覆盖预期运行的the original CMD。只要您按照here

中的说明将脚本安装在/docker-entrypoint-initdb.d/下,脚本就会自动执行。

请注意,脚本只会在容器开始时执行一次,并且要使其再次执行,您需要删除与容器关联的/data/db