mirror of
https://github.com/xzeldon/vwdump.git
synced 2025-06-28 09:38:14 +03:00
Added UID and GID environment variables to allow execution as non-root
user fixes #2
This commit is contained in:
parent
b30b631e34
commit
b9fe712fda
24
Dockerfile
24
Dockerfile
@ -1,16 +1,28 @@
|
|||||||
FROM alpine:latest
|
FROM alpine:latest
|
||||||
|
|
||||||
RUN apk add --update \
|
RUN addgroup -S app && adduser -S -G app app
|
||||||
sqlite
|
|
||||||
|
|
||||||
COPY start.sh backup.sh /
|
RUN apk add --no-cache \
|
||||||
|
sqlite \
|
||||||
|
busybox-suid \
|
||||||
|
su-exec
|
||||||
|
|
||||||
ENV DB_FILE /data/db.sqlite3
|
ENV DB_FILE /data/db.sqlite3
|
||||||
ENV BACKUP_FILE /data/db-backup/backup.sqlite3
|
ENV BACKUP_FILE /data/db_backup/backup.sqlite3
|
||||||
ENV CRON_TIME "0 5 * * *"
|
ENV CRON_TIME "0 5 * * *"
|
||||||
ENV TIMESTAMP false
|
ENV TIMESTAMP false
|
||||||
|
ENV UID 100
|
||||||
|
ENV GID 100
|
||||||
|
ENV CRONFILE /etc/crontabs/root
|
||||||
|
ENV LOGFILE /app/log/backup.log
|
||||||
|
|
||||||
RUN chmod 700 /start.sh /backup.sh
|
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
|
||||||
|
COPY backup.sh /app/
|
||||||
|
|
||||||
CMD /start.sh
|
RUN mkdir /app/log/ \
|
||||||
|
&& chown -R app:app /app/ \
|
||||||
|
&& chmod -R 777 /app/ \
|
||||||
|
&& chmod +x /usr/local/bin/entrypoint.sh
|
||||||
|
# && echo "\$CRON_TIME \$BACKUP_CMD >> \$LOGFILE 2>&1" | crontab -
|
||||||
|
|
||||||
|
ENTRYPOINT ["entrypoint.sh"]
|
||||||
|
@ -35,7 +35,11 @@ docker run --rm --volumes-from=bitwarden bruceforce/bw_backup sqlite3 $DB_FILE "
|
|||||||
## Environment variables
|
## Environment variables
|
||||||
| ENV | Description |
|
| ENV | Description |
|
||||||
| ----- | ----- |
|
| ----- | ----- |
|
||||||
| DB_FILE | Path to the Bitwarden sqlite3 database |
|
| DB_FILE | Path to the Bitwarden sqlite3 database *inside* the container |
|
||||||
| BACKUP_FILE | Path to the desired backup location |
|
| BACKUP_FILE | Path to the desired backup location *inside* the container |
|
||||||
| CRON_TIME | Cronjob format "Minute Hour Day_of_month Month_of_year Day_of_week Year" |
|
| CRON_TIME | Cronjob format "Minute Hour Day_of_month Month_of_year Day_of_week Year" |
|
||||||
| TIMESTAMP | Set to `true` to append timestamp to the `BACKUP_FILE` |
|
| TIMESTAMP | Set to `true` to append timestamp to the `BACKUP_FILE` |
|
||||||
|
| UID | User ID to run the cron job with |
|
||||||
|
| GID | Group ID to run the cron job with |
|
||||||
|
| LOGFILE | Path to the logfile *inside* the container |
|
||||||
|
| CRONFILE | Path to the cron file *inside* the container |
|
||||||
|
31
entrypoint.sh
Normal file
31
entrypoint.sh
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
#set -ux
|
||||||
|
|
||||||
|
BACKUP_CMD="/sbin/su-exec ${UID}:${GID} /app/backup.sh"
|
||||||
|
|
||||||
|
echo "Running as $(id)"
|
||||||
|
if [ "$(id -u)" -eq 0 ] && [ "$(grep -c "$BACKUP_CMD" "$CRONFILE")" -eq 0 ]; then
|
||||||
|
echo "Initalizing..."
|
||||||
|
echo "$CRON_TIME $BACKUP_CMD >> $LOGFILE 2>&1" | crontab -
|
||||||
|
|
||||||
|
# Start crond if it's not running
|
||||||
|
pgrep crond > /dev/null 2>&1
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
/usr/sbin/crond -L /app/log/cron.log
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Restart script as user "app:app"
|
||||||
|
if [ "$(id -u)" -eq 0 ]; then
|
||||||
|
exec su-exec app:app "$0" "$@"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -e "$DB_FILE" ]
|
||||||
|
then
|
||||||
|
echo "Database $DB_FILE not found!\nPlease check if you mounted the bitwarden_rs volume with '--volumes-from=bitwarden'"!
|
||||||
|
exit 1;
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$(date "+%F %T") - Container started" > "$LOGFILE"
|
||||||
|
tail -F "$LOGFILE" /app/log/cron.log
|
28
start.sh
28
start.sh
@ -1,28 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
DB_FILE=$DB_FILE
|
|
||||||
BACKUP_FILE=$BACKUP_FILE
|
|
||||||
CRON_TIME=$CRON_TIME
|
|
||||||
BACKUP_CMD=/backup.sh #'/usr/bin/sqlite3 '"$DB_FILE"' ".backup '"$BACKUP_FILE"'"'
|
|
||||||
CRONFILE=/etc/crontabs/root
|
|
||||||
LOGFILE=/var/log/backup.log
|
|
||||||
|
|
||||||
if [ ! -e "$DB_FILE" ]
|
|
||||||
then
|
|
||||||
echo "Database $DB_FILE not found!\nPlease check if you mounted the bitwarden_rs volume with '--volumes-from=bitwarden'"!
|
|
||||||
exit 1;
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ $(grep -c "$BACKUP_CMD" "$CRONFILE") -eq 0 ]
|
|
||||||
then
|
|
||||||
echo "$CRON_TIME $BACKUP_CMD >> $LOGFILE" >> "$CRONFILE"
|
|
||||||
fi
|
|
||||||
|
|
||||||
pgrep crond > /dev/null 2>&1
|
|
||||||
if [ $? -ne 0 ]
|
|
||||||
then
|
|
||||||
/usr/sbin/crond -L /var/log/cron.log
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "$(date "+%F %T") - Container started" > "$LOGFILE"
|
|
||||||
tail -F "$LOGFILE"
|
|
Loading…
x
Reference in New Issue
Block a user