首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >docker-compose运行返回/bin/ls无法执行二进制文件

docker-compose运行返回/bin/ls无法执行二进制文件
EN

Stack Overflow用户
提问于 2016-10-30 10:46:10
回答 2查看 5.4K关注 0票数 3

我刚开始学习Docker,遇到了这个问题,不知道该如何去做。

我的Dockerfile看起来像这样:

代码语言:javascript
复制
FROM node:7.0.0
WORKDIR /app
COPY app /app
COPY hermes-entry /usr/local/bin
RUN chmod +x /usr/local/bin/hermes-entry
COPY entry.d /entry.d
RUN npm install
RUN npm install -g gulp
RUN npm install gulp
RUN gulp

我的docker-compose.yml看起来像这样:

代码语言:javascript
复制
version: '2'
services:
  hermes:
    build: .
    container_name: hermes
    volumes:
      - ./app:/app
    ports:
      - "4000:4000"
   entrypoint: /bin/bash
   links:
     - postgres
   depends_on:
     - postgres
   tty: true
postgres:
  image: postgres
  container_name: postgres
  volumes:  
    - ~/.docker-volumes/hermes/postgresql/data:/var/lib/postgresql/data
  environment:
    POSTGRES_PASSWORD: password
  ports:
  - "2345:5432"

使用以下命令启动容器: docker-compose up -d

我尝试运行一个简单的bash cmd: docker-compose run hermes ls

并得到错误: /bin/ls无法执行二进制文件

你知道我做错了什么吗?

谢谢!!

EN

回答 2

Stack Overflow用户

发布于 2019-07-31 05:55:14

容器的entrypointbash。默认情况下,bash期望一个shell脚本作为其第一个参数,但正如错误所述,/bin/ls是一个二进制文件。如果你想运行/bin/ls,你需要使用-c /bin/ls作为命令。-c告诉bash,其余的参数是命令行,而不是脚本的路径,而命令行恰好是运行/bin/ls的请求。

票数 11
EN

Stack Overflow用户

发布于 2016-10-30 16:15:34

您不能在一个容器中同时运行Gulp和Node。每个容器都应该有一个进程。

如果您只想让node提供文件服务,请从hermes服务中删除您的入口点。

你可以添加另一个服务来运行gulp,如果你让它运行测试,你必须映射相同的卷并添加一个命令:"gulp“

并且您需要从dockerfile中删除RUN gulp (除非您正在使用它来构建您的节点文件)

然后运行docker-compose up

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40325601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档