У меня есть приложение Java, которое запускается в docker на основе урезанного альпийского дистрибутива. Я хочу, чтобы для umask было установлено значение 0000, чтобы все файлы, созданные приложением в настроенном томе / musi c, были доступны всем пользователям.
Последнее, что делает Dockerfile, - запускает скрипт, запускающий приложение
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.
Полный файл Docker:
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