mirror of
https://github.com/Tyrrrz/DiscordChatExporter.git
synced 2024-09-19 12:18:48 -04:00
Fix docker user permissions issues (#1194)
This commit is contained in:
parent
9b8985a920
commit
211db11041
3 changed files with 27 additions and 5 deletions
|
@ -61,6 +61,17 @@ For more information, please refer to the [Dockerfile](https://github.com/Tyrrrz
|
||||||
|
|
||||||
To get your Token and Channel IDs, please refer to [this page](Token-and-IDs.md).
|
To get your Token and Channel IDs, please refer to [this page](Token-and-IDs.md).
|
||||||
|
|
||||||
|
## Unix permissions issues
|
||||||
|
|
||||||
|
This image was designed with a user running as uid:gid of 1000:1000.
|
||||||
|
|
||||||
|
If your current user has different IDs, and you want to generate files directly editable for your user, you might want to run the container like this:
|
||||||
|
|
||||||
|
```console
|
||||||
|
mkdir data # or chown -R $(id -u):$(id -g) data
|
||||||
|
docker run -it --rm -v $PWD/data:/out --user $(id -u):$(id -g) tyrrrz/discordchatexporter:stable export -t TOKEN -g CHANNELID
|
||||||
|
```
|
||||||
|
|
||||||
## Environment variables
|
## Environment variables
|
||||||
|
|
||||||
DiscordChatExpoter CLI accepts the `DISCORD_TOKEN` environment variable as a fallback for the `--token` option. You can set this variable either with the `--env` Docker option or with a combination of the `--env-file` Docker option and a `.env` file.
|
DiscordChatExpoter CLI accepts the `DISCORD_TOKEN` environment variable as a fallback for the `--token` option. You can set this variable either with the `--env` Docker option or with a combination of the `--env-file` Docker option and a `.env` file.
|
||||||
|
|
|
@ -40,20 +40,21 @@ LABEL org.opencontainers.image.licenses="MIT"
|
||||||
|
|
||||||
# Alpine image doesn't come with the ICU libraries pre-installed, so we need to install them manually.
|
# Alpine image doesn't come with the ICU libraries pre-installed, so we need to install them manually.
|
||||||
# We need the full ICU data because we allow the user to specify any locale for formatting purposes.
|
# We need the full ICU data because we allow the user to specify any locale for formatting purposes.
|
||||||
RUN apk add --no-cache icu-libs
|
RUN apk add --no-cache icu-libs icu-data-full
|
||||||
RUN apk add --no-cache icu-data-full
|
|
||||||
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false
|
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false
|
||||||
ENV LC_ALL=en_US.UTF-8
|
ENV LC_ALL=en_US.UTF-8
|
||||||
ENV LANG=en_US.UTF-8
|
ENV LANG=en_US.UTF-8
|
||||||
|
|
||||||
# Use a non-root user to ensure that the files shared with the host are accessible by the host user
|
# Use a non-root user to ensure that the files shared with the host are accessible by the host user
|
||||||
# https://github.com/Tyrrrz/DiscordChatExporter/issues/851
|
# https://github.com/Tyrrrz/DiscordChatExporter/issues/851
|
||||||
RUN adduser --disabled-password --no-create-home dce
|
# https://github.com/Tyrrrz/DiscordChatExporter/issues/1174
|
||||||
USER dce
|
RUN apk add --no-cache su-exec
|
||||||
|
RUN addgroup -S -g 1000 dce && adduser -S -H -G dce -u 1000 dce
|
||||||
|
|
||||||
# This directory is exposed to the user for mounting purposes, so it's important that it always
|
# This directory is exposed to the user for mounting purposes, so it's important that it always
|
||||||
# stays the same for backwards compatibility.
|
# stays the same for backwards compatibility.
|
||||||
WORKDIR /out
|
WORKDIR /out
|
||||||
|
|
||||||
COPY --from=build /tmp/app/DiscordChatExporter.Cli/bin/publish /opt/app
|
COPY --from=build /tmp/app/DiscordChatExporter.Cli/bin/publish /opt/app
|
||||||
ENTRYPOINT ["/opt/app/DiscordChatExporter.Cli"]
|
COPY docker-entrypoint.sh /opt/app
|
||||||
|
ENTRYPOINT ["/opt/app/docker-entrypoint.sh"]
|
||||||
|
|
10
docker-entrypoint.sh
Executable file
10
docker-entrypoint.sh
Executable file
|
@ -0,0 +1,10 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
# If we are root, ensure the files in /out are writable
|
||||||
|
# by the dce user and restart the process as the dce user
|
||||||
|
if [ "$(id -u)" = '0' ]; then
|
||||||
|
chown -R dce:dce /out
|
||||||
|
exec su-exec dce "$0" "$@"
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec ./DiscordChatExporter.Cli "$@"
|
Loading…
Reference in a new issue