如何在基于alpine的docker容器中配置umask
我有一个在docker中运行的Java应用程序,它基于精简的alpine发行版,我希望将umask设置为0000,以便所有用户都可以访问应用程序在配置的卷/音乐中创建的所有文件 Dockerfile所做的最后一件事是运行启动应用程序的脚本如何在基于alpine的docker容器中配置umask,docker,alpine,umask,Docker,Alpine,Umask,我有一个在docker中运行的Java应用程序,它基于精简的alpine发行版,我希望将umask设置为0000,以便所有用户都可以访问应用程序在配置的卷/音乐中创建的所有文件 Dockerfile所做的最后一件事是运行启动应用程序的脚本 CMD /opt/songkong/songkongremote.sh 此文件包含以下内容 umask 0000 java -XX:MaxRAMPercentage=60 \ -Dcom.mchange.v2.log.MLog
CMD /opt/songkong/songkongremote.sh
此文件包含以下内容
umask 0000
java -XX:MaxRAMPercentage=60 \
-Dcom.mchange.v2.log.MLog=com.mchange.v2.log.jdk14logging.Jdk14MLog\
-Dorg.jboss.logging.provider=jdk \
-Djava.util.logging.config.class=com.jthink.songkong.logging.StandardLogging\ --add-opens java.base/java.lang=ALL-UNNAMED -jar lib/songkong-6.9.jar -r
应用程序运行,但在docker容器日志中,我看到以下内容输出到stdout
/opt/songkong/songkongremote.sh: umask: line 1: illegal mode: 0000
表示umask命令不起作用,我不理解,因为这是umask的有效值。(我也尝试过umask 000,但失败了,出现了相同的错误)
我还尝试添加
#!/bin/sh
作为文件的第一行,但Docker抱怨它找不到/bin/sh
完整Dockerfile是:
FROM adoptopenjdk/openjdk11:alpine-jre
RUN apk --no-cache add \
ca-certificates \
curl \
fontconfig \
msttcorefonts-installer \
tini \
&& update-ms-fonts \
&& fc-cache -f
RUN mkdir -p /opt \
&& curl http://www.jthink.net/songkong/downloads/build1114/songkong-linux-docker.tgz?val=121| tar -C /opt -xzf - \
&& find /opt/songkong -perm /u+x -type f -print0 | xargs -0 chmod a+x
EXPOSE 4567
ENTRYPOINT ["/sbin/tini"]
# Config, License, Logs, Reports and Internal Database
VOLUME /songkong
# Music folder should be mounted here
VOLUME /music
WORKDIR /opt/songkong
CMD /opt/songkong/songkongremote.sh
您的
/opt/songkong/songkongremote.sh
脚本具有类似于非linux新行(Windows?)的功能
您可以通过运行以下命令进行查看:
$ docker run --rm -it your-image-name vi /opt/songkong/songkongremote.sh
这和
#的原因是一样的/bin/sh
行不起作用,它可能看起来像#/bin/sh^M
。脚本文件中有回车字符:
umask 0000^M
java -XX:MaxRAMPercentage=60 -Dcom.mchange.v2.log.MLog=com.mchange.v2.log.jdk14logging.Jdk14MLog -Dorg.jboss.logging.provider=jdk -Djava.util.logging.config.class=com.jthink.songkong.logging.StandardLoggi
^M
您可以将
运行sed-i-e's/\r//g'/opt/songkong/songkongremote.sh
添加到Dockerfile,或者更好地重新创建脚本。谢谢,确实是这样。我以前也犯过这样的错误,开发环境是windows使用Jebrains Intellij Ide,它没有给我任何指控,当它这样做的时候,一定是我需要使用的一些设置。奇怪的是,我用你的脚本在windows docker工具包上构建,并且成功构建,没有任何问题。构建很好,当它运行正常并且我可以访问主页时,问题就出现了too@Sam原来它有winows cntl chracters,所以这就是为什么在windows上适用于您,而在linux上不适用于我