【问题标题】:Docker docker-entrypoint-initdb.d/ scripts with Mongodb aren't working带有 Mongodb 的 Docker docker-entrypoint-initdb.d/ 脚本无法正常工作
【发布时间】:2021-04-04 20:55:36
【问题描述】:

我一直在努力通过 /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'。

我该怎么办?我有什么遗漏吗?

【问题讨论】:

    标签: mongodb docker


    【解决方案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

    【讨论】:

    • 是的,我明白你在说什么。我已经删除了图像。我也使用了您提供的命令。但仍然没有成功。 =(
    • 您是否尝试在图像中检查脚本是否确实存在于 initdb 目录中?
    • 啊,我想我知道问题所在。您可以尝试将其切换到 /bin/sh 而不是 /bin/bash 吗?然后再次使用我提供的命令。因为大多数图像没有 bash。 @Xenetrix
    • 事实是我已经再次检查了一切,除了应用您的建议,我仍然找不到问题。我要找的是使用脚本来初始化我的mogodb数据库,但是如果我不先解决执行问题,我就无法前进。
    • 很奇怪,有时脚本有效,有时无效……但您的答案是完美的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多