gpt4 book ai didi

Docker COPY sh 脚本不起作用(未找到)

转载 作者:行者123 更新时间:2023-12-02 18:18:47 26 4
gpt4 key购买 nike

我对 docker 并不陌生,但我主要使用预构建的图像,我使用 docker-compose 进行连接。我需要一个 super 基本的容器,它只读取日志文件并将内容流式传输到标准输出,因为我在另一个容器中存在权限问题。

看:
https://github.com/webdevops/Dockerfile/issues/332

无论如何 - 我在第一步失败了,不知道是什么问题

这是我的 Dockerfile:

FROM alpine:latest
COPY readlogs.sh /root/readlogs.sh
CMD ['/root/readlogs.sh']

sheel 脚本看起来像这样(目前 - 我正在测试)
#!/usr/bin/env bash
echo "hello world"

#cat /dev/null > /var/log/app/error.log
#cat /dev/null > /var/log/app/debug.log

#tail -f /var/log/app/error.log > /dev/stderr &
#tail -f /var/log/app/debug.log > /dev/stdout &

如您所见,我想截断一些日志文件,然后连续读取它。

构建图像工作正常,启动它会导致:
/bin/sh: [/root/readlogs.sh]: not found
exited with code 127

NO - 行尾不是 DOS。

我的 docker-compose.yml
  logreader:
build:
context: docker/logreader
dockerfile: Dockerfile
volumes:
- ./var/logs:/var/log/app

那么 - 为什么我不能执行 readlogs.sh 文件?

该文件是可执行的(在主机上),我尝试添加 RUN chmod +x /root/readlogs.sh但它也不起作用。

最佳答案

对于找不到文件的问题,您需要替换 CMD ['/root/readlogs.sh']CMD [ "/root/readlogs.sh" ] .注意双引号和空格。

但即使你修复了这个问题,你仍然会遇到另一个问题,那就是你试图使用 bash在 Alpine 。所以你需要改成sh正如林比所说。

关于Docker COPY sh 脚本不起作用(未找到),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59156149/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com