Docker Compose OCI 运行时错误,$PATH 中找不到可执行文件

8

我正在关注这篇文章:

http://eric-price.net/blog/centralized-logging-docker-aws-elasticsearch

这是我的docker-compose.yml文件的样子:

version: "2"

services:

  fluentd:
    image: fluent/fluentd:latest
    ports:
      - "24224:24224"
    command: start.sh
    networks:
      - lognet

  nginx:
    image: nginx-pixel
    ports:
      - "80:80"
    logging:
      driver: fluentd
    networks:
      - lognet

networks:
  lognet:
    driver: bridge

我的start.sh文件和yml文件在同一个目录下。当我运行docker-compose up -d时,会出现以下错误:

ERROR: for fluentd Cannot start service fluentd: oci runtime error: exec: "start.sh": executable file not found in $PATH ERROR: Encountered errors while bringing up the project.

我的docker-compose信息如下:

docker-compose version 1.8.0, build f3628c7
docker-py version: 1.9.0
CPython version: 2.7.9
OpenSSL version: OpenSSL 1.0.1e 11 Feb 2013
1个回答

7
命令在容器内执行-您正在使用一个已拉取的Fluentd容器,其中没有您的start.sh文件。您可以选择:

A. 将其绑定挂载到容器中

#docker-compose.yml
  fluentd:
    image: fluent/fluentd:latest
    volumes:
      - ./start.sh:/start.sh
    command: /start.sh

或者B.将其构建到镜像中
# Dockerfile
FROM fluent/fluentd:latest
COPY start.sh /start.sh

#docker-compose.yml
  fluentd:
    build: .

谢谢。我通过在我的docker-compose中添加以下内容来修复它:volumes:- ./fluentd/etc:/fluentd/etc command: /fluentd/etc/start.sh - tyrell_c
1
从阅读那篇博客文章中,我们可以看出start.sh不是一个好的实践方式 - 你应该在Dockerfile中运行gem installs,这样你就不必每次运行容器时重新安装它们。 - Paul Becotte

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接