我一直在努力通过 /docker-entrypoint-initdb.d 在 Docker 的 Mongo 容器中配置脚本的执行。
我曾尝试仔细遵循 documentation,但没有成功。
项目结构
docker-compose.yml
version: '3.3'
services:
mongodb:
image: mongo:latest
container_name: mongo_db
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: rootpass
MONGO_INITDB_DATABASE: database
volumes:
- mongodbdata:/data/db
- ./init.d/:/docker-entrypoint-initdb.d/
restart: always
volumes:
mongodbdata:
driver: local
init-mongo.sh
#!/bin/bash
echo 'hello script'
在日志中没有执行命令 echo 'hello script'。
我该怎么办?有什么我遗漏的吗?
答案 0 :(得分:1)
Docker 仅在创建映像时执行 docker-entrypoint-initdb.d
内的脚本,因为这主要用于播种数据。如果它不是一个新鲜的图像,而您只是想用您的脚本再次生成它,那么这就是导致它的原因。
您可以尝试做的是在终端中输入:
docker stop $(docker ps -aq) && docker rm $(docker ps -aq) && docker rmi mongo:latest -f && docker-compose up
然后检查日志:P