我刚开始学习Docker,遇到了这个问题,不知道该如何去做。
我的Dockerfile看起来像这样:
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看起来像这样:
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无法执行二进制文件
你知道我做错了什么吗?
谢谢!!
发布于 2019-07-31 05:55:14
容器的entrypoint是bash。默认情况下,bash期望一个shell脚本作为其第一个参数,但正如错误所述,/bin/ls是一个二进制文件。如果你想运行/bin/ls,你需要使用-c /bin/ls作为命令。-c告诉bash,其余的参数是命令行,而不是脚本的路径,而命令行恰好是运行/bin/ls的请求。
发布于 2016-10-30 16:15:34
您不能在一个容器中同时运行Gulp和Node。每个容器都应该有一个进程。
如果您只想让node提供文件服务,请从hermes服务中删除您的入口点。
你可以添加另一个服务来运行gulp,如果你让它运行测试,你必须映射相同的卷并添加一个命令:"gulp“
并且您需要从dockerfile中删除RUN gulp (除非您正在使用它来构建您的节点文件)
然后运行docker-compose up
https://stackoverflow.com/questions/40325601
复制相似问题