Fixes
This commit is contained in:
parent
bbe36da3ce
commit
14f0cd5435
10
Dockerfile
10
Dockerfile
@ -1,9 +1,12 @@
|
||||
FROM lukechannings/deno:v1.38.2
|
||||
FROM lukechannings/deno:v1.38.3
|
||||
# The volume that will keep the space data
|
||||
# Create a volume first:
|
||||
|
||||
# Either create a volume:
|
||||
# docker volume create myspace
|
||||
# Then bind-mount it when running the container with the -v flag, e.g.:
|
||||
# docker run -v myspace:/space -p3000:3000 -it zefhemel/silverbullet
|
||||
# Or simply mount an existing folder into the container:
|
||||
# docker run -v /path/to/my/folder:/space -p3000:3000 -it zefhemel/silverbullet
|
||||
VOLUME /space
|
||||
|
||||
# Accept TARGETARCH as argument
|
||||
@ -13,7 +16,6 @@ ARG TARGETARCH
|
||||
ENV TINI_VERSION v0.19.0
|
||||
ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini-${TARGETARCH} /tini
|
||||
|
||||
|
||||
# Make sure the deno user has access to the space volume
|
||||
RUN mkdir -p /space \
|
||||
&& chmod +x /tini \
|
||||
@ -34,11 +36,13 @@ RUN mkdir -p /space \
|
||||
# Port map this when running, e.g. with -p 3002:3000 (where 3002 is the host port)
|
||||
EXPOSE 3000
|
||||
|
||||
# Always binding to this IP, otherwise the server wouldn't be available
|
||||
ENV SB_HOSTNAME 0.0.0.0
|
||||
ENV SB_FOLDER /space
|
||||
|
||||
# Copy the bundled version of silverbullet into the container
|
||||
ADD ./dist/silverbullet.js /silverbullet.js
|
||||
# As well as the docker-entrypoint.sh script
|
||||
ADD ./docker-entrypoint.sh /docker-entrypoint.sh
|
||||
|
||||
# Run the server, allowing to pass in additional argument at run time, e.g.
|
||||
|
@ -1,25 +1,27 @@
|
||||
#!/bin/bash
|
||||
#!/bin/bash -e
|
||||
|
||||
# Check if UID and GID are passed as environment variables
|
||||
if [ -z "$UID" ]; then
|
||||
# Check if UID and GID are passed as environment variables, if not, extract from the space folder owner
|
||||
if [ -z "$PUID" ]; then
|
||||
# Get the UID of the folder owner
|
||||
UID=$(stat -c "%u" "$SB_FOLDER")
|
||||
PUID=$(stat -c "%u" "$SB_FOLDER")
|
||||
echo "Will run SilverBullet with UID $PUID, inferred from the owner of $SB_FOLDER (set PUID environment variable to override)"
|
||||
fi
|
||||
|
||||
if [ -z "$GID" ]; then
|
||||
if [ -z "$PGID" ]; then
|
||||
# Get the GID of the folder owner
|
||||
GID=$(stat -c "%g" "$SB_FOLDER")
|
||||
PGID=$(stat -c "%g" "$SB_FOLDER")
|
||||
fi
|
||||
|
||||
echo "Doing this as $UID, $GID"
|
||||
|
||||
ls -l /space
|
||||
|
||||
if [ "$UID" -eq 0 ]; then
|
||||
# If the UID is 0, the user is root
|
||||
if [ "$PUID" -eq "0" ]; then
|
||||
echo "Will run SilverBullet as root"
|
||||
deno run -A --unstable /silverbullet.js $@
|
||||
exit
|
||||
else
|
||||
useradd -M -u $UID -g $GID silverbullet
|
||||
su silverbullet -s /bin/bash -c "deno run -A --unstable /silverbullet.js $@"
|
||||
# Create silverbullet user and group ad-hoc mapped to PUID and PGID
|
||||
groupadd -g $PGID silverbullet
|
||||
useradd -M -u $PUID -g $PGID silverbullet
|
||||
# And make sure /deno-dir (Deno cache) is accessible
|
||||
chown -R $PUID:$PGID /deno-dir
|
||||
# And run via su as the newly mapped 'silverbullet' user
|
||||
args="$@"
|
||||
su silverbullet -s /bin/bash -c "deno run -A --unstable /silverbullet.js $args"
|
||||
fi
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user