diff --git a/Dockerfile.GitHubActions b/Dockerfile.GitHubActions index ced2c88..61087fc 100644 --- a/Dockerfile.GitHubActions +++ b/Dockerfile.GitHubActions @@ -1,32 +1,22 @@ FROM mcr.microsoft.com/dotnet/aspnet:6.0 ENV TZ=Asia/Shanghai -ENV GOSU_VERSION=1.17 ENV UMASK=022 -ENV PUID=1000 -ENV PGID=1000 - +ENV PUID=0 +ENV PGID=0 WORKDIR /app VOLUME [ "/rec" ] +COPY --from=tianon/gosu:1.17 /gosu /usr/local/bin/ COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh COPY ./BililiveRecorder.Cli/bin/docker_out /app -RUN apt-get update && \ - apt-get install -y wget && \ - rm -rf /var/lib/apt/lists/* && \ - useradd -r -g users user && \ - chmod a+x /usr/local/bin/docker-entrypoint.sh && \ +RUN chmod a+x /usr/local/bin/docker-entrypoint.sh && \ + chmod -R 777 /app && \ ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && \ echo $TZ > /etc/timezone -ARG TARGETPLATFORM - -RUN if [ "$TARGETPLATFORM" = "linux/amd64" ]; then wget -O /usr/local/bin/gosu https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-amd64; fi; if [ "$TARGETPLATFORM" = "linux/arm64" ]; then wget -O /usr/local/bin/gosu https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-arm64; fi; if [ "$TARGETPLATFORM" = "linux/arm/v7" ]; then wget -O /usr/local/bin/gosu https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-armhf; fi - -RUN chmod +x /usr/local/bin/gosu - EXPOSE 2356/tcp ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"] diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 04754af..800ee71 100644 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -2,14 +2,19 @@ set -e -umask $UMASK +umask "$UMASK" -usermod -u $PUID user -groupmod -g $PGID users +if [ "$(id -u)" != "0" ]; then + echo "Skipped changing user and group because current user is not root." + exec dotnet /app/BililiveRecorder.Cli.dll "$@" +fi -chown -R user:users /app -chown -R user:users /rec +PUID=${PUID:-0} +PGID=${PGID:-0} -export HOME=/home/user - -exec /usr/local/bin/gosu user dotnet /app/BililiveRecorder.Cli.dll $@ +if [ "${PUID}" != "0" ] && [ "${PGID}" != "0" ]; then + chown -R "${PUID}":"${PGID}" /rec + exec /usr/local/bin/gosu "${PUID}":"${PGID}" dotnet /app/BililiveRecorder.Cli.dll "$@" +else + exec dotnet /app/BililiveRecorder.Cli.dll "$@" +fi