首页 > 解决方案 > Docker 无法运行入口点

问题描述

所以我创建了一个 node/mongo 应用程序,我正在尝试在 docker 上运行所有内容。

在我尝试将 mongo 实例的 init 文件添加到入口点之前,我可以让一切正常运行。

这是我的 mongo docker 文件:(在 /MongoDB 中称为 mongo.dockerfile)

FROM mongo:4.2

WORKDIR /usr/src/mongo

VOLUME /docker/volumes/mongo /user/data/mongo

ADD ./db-init /docker-entrypoint-initdb.d

CMD ["mongod", "--auth"]

db-init 文件夹包含一个如下所示的 init.js 文件(删除了东西的名称):

db.createUser({
    user: '',
    pwd: '',
    roles: [ { role: 'readWrite', db: '' } ]
})

这是我的 docker-compose 文件:

version: "3.7"
services:
  web:
    container_name: web
    env_file:
      - API/web.env
    build:
      context: ./API
      target: prod
      dockerfile: web.dockerfile
    ports:
      - "127.0.0.1:3000:3000"
    depends_on:
    - mongo
    links:
      - mongo
    restart: always
  mongo:
    container_name: mongo
    env_file:
      - MongoDB/mongo.env
    build:
      context: ./MongoDB
      dockerfile: mongo.dockerfile
    restart: always

我在运行 a 时得到的确切错误docker-compose up是:

ERROR: for mongo Cannot start service mongo: OCI runtime create failed: container_linux.go:346: starting container process caused "exec: \"docker-entrypoint-initdb.d\": executable file not found in $PATH": unknown

我曾经在另一个项目中进行过此工作,但似乎根本无法使其正常工作。

关于我做错了什么有什么想法吗?

另请注意,我已经看到类似这样的其他问题,对 chmod +x 路径说(尝试过没有用)也尝试过 chmod 777 也没有用。(也许我做错了,我不知道到底要运行什么?)

标签: mongodbdockerdocker-compose

解决方案


您的入口点已从上游图像修改,目前尚不清楚您提供的输入如何。您可能已经修改了 mongo 映像本身,需要使用docker-compose build --pull. 否则,您可以强制入口点返回上游值

ENTRYPOINT ["docker-entrypoint.sh"]

推荐阅读