【问题标题】:How to solve docker-entrypoint.sh executable file not found in $PATH: unknown?如何解决 $PATH 中找不到 docker-entrypoint.sh 可执行文件:未知?
【发布时间】:2021-03-29 16:00:55
【问题描述】:

尝试在 Docker 上为我的应用程序启动后端时遇到问题。当我在 VS Code 上选择 Compose Up 时出现以下错误。我读到我需要在我的 Dockerfile 中添加RUN chmod -x docker-entrypoint.sh,但它并没有解决问题。

Successfully built some_id_abc123
mongodb is up-to-date
cache is up-to-date
Recreating some_project_server ... error

ERROR: for some_project_server Cannot start service server: OCI runtime create failed: container_linux.go:370: starting container process caused: exec: "docker-entrypoint.sh": executable file not found in $PATH: unknown

ERROR: for server  Cannot start service server: OCI runtime create failed: container_linux.go:370: starting container process caused: exec: "docker-entrypoint.sh": executable file not found in $PATH: unknown
ERROR: Encountered errors while bringing up the project.
The terminal process "/bin/zsh '-c', 'docker-compose -f "docker-compose.yml" up -d --build'" terminated with exit code: 1.

Dockerfile:

FROM node
WORKDIR /usr/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD npm run dev 

docker-compose.yml:

version: "3"

services:
  database:
    image: mongo
    container_name: mongodb
    restart: always
    ports: 
      - "27017:27017"
    environment:
      - MONGO_INITDB_DATABASE=some_db
      - MONGO_INITDB_ROOT_USERNAME=some_user
      - MONGO_INITDB_ROOT_PASSWORD=some_password
    volumes:
      - ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro
      - ./mongo-volume:/data/db
    networks:
      - server-network

  redis:
    image: redis
    container_name: cache
    command: redis-server --requirepass some_password
    restart: always
    volumes:
      - ./redis-data:/var/lib/redis
    ports:
      - "6379:6379"
    networks:
      - server-network

  server:
    build: .
    depends_on:
      - database
      - redis
    environment:
      - ENV_VARIABLES=some_env_variables
    ports:
      - "3000:3000"
    volumes:
      - .:/usr/app
    networks:
      - server-network

networks:
  server-network:
    driver: bridge

最后是项目的文件结构:

project
  - src
  - test
  - .dockerignore
  - docker-compose.yml
  - Dockerfile
  - mongo-init.js
  - package-lock.json
  - package.json

这个问题的根源是什么以及如何解决?我从 Docker 开始,这是我从事的第一个需要 Docker 的专业项目。

【问题讨论】:

  • 你为什么用RUN chmod -x docker-entrypoint.sh而不是RUN chmod +x ...?你是怎么跑docker-entrypoint.sh的?你在哪里添加或复制它?
  • 实际上我试过但删除了这个命令,我在其他帖子上读到,当这个问题发生时,这就是解决方案,所以我创建了一个带有exec npm run dev 之类的 docker-entrypoint.sh,只是看看这是否能解决问题,但不,也没有帮助,所以我删除了文件和命令。 @Saeed
  • 你可以试试ENTRYPOINT["npm","run","dev"]而不是CMD
  • 这会导致以下错误@MustafaGüler starting container process caused: exec: "npm": executable file not found in $PATH: unknown
  • 在某个时候,您的docker-compose.yml 中有image: node 吗?如果你docker rmi node然后重新运行docker-compose up -d --build,是不是更好(Docker会再次拉取上游的node镜像)?

标签: node.js docker docker-compose dockerfile


【解决方案1】:

试试 docker compose build 接下来 docker compose up 找到了HERE 为我工作。

【讨论】:

  • 这并不能真正回答问题。如果您有其他问题,可以点击 提问。要在此问题有新答案时收到通知,您可以follow this question。一旦你有足够的reputation,你也可以add a bounty 来引起对这个问题的更多关注。 - From Review
猜你喜欢
  • 2021-11-23
  • 1970-01-01
  • 2021-09-16
  • 2021-09-20
  • 1970-01-01
  • 2020-03-31
  • 2022-09-23
  • 2019-01-16
  • 2015-01-25
相关资源
最近更新 更多