gpt4 book ai didi

bash - 在 Docker 容器启动时启动 bash 脚本不起作用

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

在过去的几个小时里,我一直在尝试在 docker 容器启动时启动我的 startup.sh 脚本,但由于某种原因它不起作用。

我的 Dockerfile 用于创建镜像:

FROM armv7/armhf-ubuntu:latest
MAINTAINER Mohammed Noureldin <<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="a2cf8ccc8cc7e2cacdd6cfc3cbce8cc1cdcf" rel="noreferrer noopener nofollow">[email protected]</a>>
RUN apt update && apt upgrade -y && apt install -y mumble-server
ADD scripts/startup.sh /startup.sh

我的启动脚本:

#!/bin/bash
/etc/init.d/mumble-server start

这里没有任何反应,虽然我尝试在脚本中创建一个文件,但也没有发生任何事情!

我尝试直接从命令行执行脚本,但它不起作用我不知道为什么:

docker运行命令:

docker run --name murmur -itd --restart always --network bridge -p 64738:64738 -v /var/lib/mumble-server/ -v /etc/ mnoureldin/murmur:latest /bin/bash -c "bash /startup.sh;/bin/bash"

这是我尝试手动执行脚本时得到的结果:

43b9d8dd4116bc605537c7af35ab186ca165ea6e957fab5908d39b2f085edf41
mohammed@server01:~/Dockerfiles/Mumble $ docker attach murmur
root@43b9d8dd4116:/# bash
.dockerenv boot/ etc/ lib/ mnt/ proc/ run/ srv/ sys/ usr/
bin/ dev/ home/ media/ opt/ root/ sbin/ startup.sh tmp/ var/
root@43b9d8dd4116:/# bash startup.sh
Usage: /etc/init.d/mumble-server {start|stop|restart|force-reload}

或者当我在脚本的两行之间有一个空行时,我收到此错误:

root@830193e67fd7:/# bash startup.sh
startup.sh: line 2: $'\r': command not found
Usage: /etc/init.d/mumble-server {start|stop|restart|force-reload}

有人可以解释一下什么是 heppening 以及为什么它不起作用吗?

最佳答案

该错误是由 shell 脚本中的行结尾引起的。看起来您正在使用 Windows 行结尾(CRLF 或 \r\n),其中意外的 r 使 Bash 感到困惑。 Bash 只需要 LF 或 \n,因此会出现错误消息。

大多数程序员文本编辑器都对进行这些更改提供某种支持。 Notepad++ 有“编辑 > EOL 转换 > Unix/OSX 格式”。请参阅EOL conversion in notepad ++了解更多信息。

关于bash - 在 Docker 容器启动时启动 bash 脚本不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40363077/

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