我正在使用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
答案 0 :(得分:1)
您不需要修改mongo命令,因为它将导致mongodb容器出现问题。通过定义command
,您将覆盖预期运行的the original CMD
。只要您按照here
/docker-entrypoint-initdb.d/
下,脚本就会自动执行。
请注意,脚本只会在容器开始时执行一次,并且要使其再次执行,您需要删除与容器关联的/data/db
卷