standard_init_linux.go:219: exec 用户进程导致:没有这样的文件或目录 - docker 问题

Posted

技术标签:

【中文标题】standard_init_linux.go:219: exec 用户进程导致:没有这样的文件或目录 - docker 问题【英文标题】:standard_init_linux.go:219: exec user process caused: no such file or directory - docker problem 【发布时间】:2021-05-16 07:18:28 【问题描述】:

我的 docker 有问题,在运行命令时,docker-compose up -d --build 3 容器 app, database, api 是在应用程序innovation 中创建的,但是当访问 api 容器中的 docker 终端时,我得到这个错误``这是我的 docker-compose.yaml:

version: "3"

services:
  api:
    build: ./api
    entrypoint: ./.docker/entrypoint.sh
    container_name: quimiweb-innovation-api
    env_file: .env
    environment:
      DATABASE_CLIENT: $DATABASE_CLIENT
      DATABASE_NAME: $DATABASE_NAME
      DATABASE_HOST: $DATABASE_HOST
      DATABASE_PORT: $DATABASE_PORT
      DATABASE_USERNAME: $DATABASE_USERNAME
      DATABASE_PASSWORD: $DATABASE_PASSWORD
      FRONTEND_URL: $FRONTEND_URL
    ports:
      - "1337:1337"
    volumes:
      - ./api/:/home/node/api
    networks:
      - app-network

  database:
    image: mongo
    container_name: quimiweb-innovation-database
    env_file: .env
    environment:
      MONGO_INITDB_ROOT_USERNAME: $MONGO_INITDB_ROOT_USERNAME
      MONGO_INITDB_ROOT_PASSWORD: $MONGO_INITDB_ROOT_PASSWORD
    networks:
      - app-network
    volumes:
      - .database/:/data/db
    ports:
      - "27017:27017"

  app:
    build: ./app/
    entrypoint: ./.docker/entrypoint.sh
    container_name: quimiweb-innovation-app
    env_file: .env
    environment:
      SKIP_PREFLIGHT_CHECK: $SKIP_PREFLIGHT_CHECK
    ports: 
      - 3001:3001
    volumes:
      - ./app/:/home/node/app       

networks:
  app-network:
    driver: bridge

volumes:
  app-volume:

来自 api 的我的 entrypoint.sh:

#!/bin/bash

yarn
yarn develop

【问题讨论】:

请分享您的entrypoint.sh #!/bin/bash 纱线纱线开发 【参考方案1】:

就我而言,我通过将 entrypoint.sh 文件的行尾从 CRLF 更改为 LF 来解决此问题

编辑

在右侧底部面板上的 Notepad++ 中,右键单击区域 Windows (CR LF) 并选择 UNIX (LF) 这应该将所有 CRLFs 替换为 LFs

【讨论】:

我该怎么做? 在 Notepad++ 的右侧底部面板中,右键单击区域 Windows (CR LF) 并选择 UNIX (LF) 这应该将所有 CRLF 替换为 LF,谢谢【参考方案2】:

启动基于64-bit x86 代理但运行在64-bit Arm 容器主机上的映像时,也可能出现此错误。

【讨论】:

【参考方案3】:

对我来说,行尾已经是 LF,我删除了所有图像并重建了它们,但在构建之前,我发现我错过了 shebang -

#!/bin/bash

我刚刚添加并重建了容器并发现它可以正常工作。

【讨论】:

【参考方案4】:

同样的问题,通过改变行尾解决了它。还必须在更改生效之前重建映像。

【讨论】:

以上是关于standard_init_linux.go:219: exec 用户进程导致:没有这样的文件或目录 - docker 问题的主要内容,如果未能解决你的问题,请参考以下文章