add dockerfile
This commit is contained in:
parent
310511864b
commit
a2b9569610
|
@ -0,0 +1,48 @@
|
||||||
|
# I'd rather use alpine, but i get a file not found error if i do.... most annoying
|
||||||
|
FROM ubuntu
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
ADD . /app
|
||||||
|
VOLUME /data
|
||||||
|
VOLUME /home/odrive/.odrive-agent
|
||||||
|
|
||||||
|
RUN apt-get update \
|
||||||
|
&& \
|
||||||
|
apt-get install -y -q --no-install-recommends \
|
||||||
|
curl ca-certificates \
|
||||||
|
&& \
|
||||||
|
apt-get clean \
|
||||||
|
&& \
|
||||||
|
groupadd -g 1000 odrive \
|
||||||
|
&& \
|
||||||
|
useradd -d /home/odrive -g 1000 -m -u 1000 odrive \
|
||||||
|
&& \
|
||||||
|
touch \
|
||||||
|
/var/log/odriveagent.log \
|
||||||
|
/var/log/odriveagent.1.log \
|
||||||
|
/var/log/odrivesync.log \
|
||||||
|
/var/log/odrivesync.1.log \
|
||||||
|
/var/log/odriverefresh.log \
|
||||||
|
/var/log/odriverefresh.1.log \
|
||||||
|
/app/run.pids \
|
||||||
|
&& \
|
||||||
|
chown odrive:odrive /app /app/* /var/log/odrive* \
|
||||||
|
&& \
|
||||||
|
chmod ug+rwX /app /app/* /var/log/odrive*
|
||||||
|
|
||||||
|
USER odrive
|
||||||
|
|
||||||
|
RUN curl -L "http://dl.odrive.com/odrive-py" --create-dirs -o "/app/bin/odrive.py" \
|
||||||
|
&& \
|
||||||
|
curl -L "http://dl.odrive.com/odriveagent-lnx-64" | tar -xvzf- -C "/app/bin/" \
|
||||||
|
&& \
|
||||||
|
curl -L "http://dl.odrive.com/odrivecli-lnx-64" | tar -xvzf- -C "/app/bin/" \
|
||||||
|
&& \
|
||||||
|
chmod +x /app/bin/*
|
||||||
|
|
||||||
|
ENV ODRIVE_AUTH_TOKEN=NOAUTH
|
||||||
|
ENV ODRIVE_REMOTE_MOUNT="/"
|
||||||
|
|
||||||
|
CMD ["/bin/bash", "/app/runodrive.sh"]
|
||||||
|
HEALTHCHECK CMD ["/bin/bash", "/app/healthcheck.sh"]
|
||||||
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
source /app/run.pids
|
||||||
|
|
||||||
|
ERRORS=0
|
||||||
|
if [ -n "${PID_LOGROTATE}" -a -e /proc/${PID_LOGROTATE} ]; then
|
||||||
|
echo 'SUCCESS: odrive log rotator running'
|
||||||
|
else
|
||||||
|
((ERRORS++))
|
||||||
|
echo 'ERROR: odrive log rotator not running'
|
||||||
|
fi
|
||||||
|
if [ -n "${PID_ODRIVEAGENT}" -a -e /proc/${PID_ODRIVEAGENT} ]; then
|
||||||
|
echo 'SUCCESS: odrive agent running'
|
||||||
|
else
|
||||||
|
((ERRORS++))
|
||||||
|
echo 'ERROR: odrive agent not running'
|
||||||
|
fi
|
||||||
|
if [ -n "${PID_ODRIVEREFRESH}" -a -e /proc/${PID_ODRIVEREFRESH} ]; then
|
||||||
|
echo 'SUCCESS: odrive refresh running'
|
||||||
|
else
|
||||||
|
((ERRORS++))
|
||||||
|
echo 'ERROR: odrive refresh not running'
|
||||||
|
fi
|
||||||
|
if [ -n "${PID_ODRIVETRASH}" -a -e /proc/${PID_ODRIVETRASH} ]; then
|
||||||
|
echo 'SUCCESS: odrive empty trash running'
|
||||||
|
else
|
||||||
|
((ERRORS++))
|
||||||
|
echo 'ERROR: odrive empty trash not running'
|
||||||
|
fi
|
||||||
|
if [ -n "${PID_ODRIVESYNC}" -a -e /proc/${PID_ODRIVESYNC} ]; then
|
||||||
|
echo 'SUCCESS: odrive sync running'
|
||||||
|
else
|
||||||
|
((ERRORS++))
|
||||||
|
echo 'ERROR: odrive sync not running'
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${ERRORS}" -gt 0 ]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
|
@ -0,0 +1,130 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
APPDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
|
||||||
|
PATH="${APPDIR}/bin:${PATH}"
|
||||||
|
PID_ODRIVEAGENT=''
|
||||||
|
PID_ODRIVEREFRESH=''
|
||||||
|
PID_ODRIVETRASH=''
|
||||||
|
PID_ODRIVESYNC=''
|
||||||
|
PID_LOGROTATE=''
|
||||||
|
|
||||||
|
function initOneDrive() {
|
||||||
|
local INIT_FIRST=0
|
||||||
|
if [ ! -e /home/odrive/.odrive-agent/db/odrive.db -a "${ODRIVE_AUTH_TOKEN}" = "NOAUTH" ]; then
|
||||||
|
INIT_FIRST=1
|
||||||
|
echo "NO AUTHENTICATION TOKEN PROVIDED. CANNOT RUN" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
odriveagent &>/var/log/odriveagent.log &
|
||||||
|
PID_ODRIVEAGENT=$!
|
||||||
|
sleep 2s;
|
||||||
|
if [ "${INIT_FIRST}" = "1" ]; then
|
||||||
|
odrive authenticate "${ODRIVE_AUTH_TOKEN}"
|
||||||
|
odrive mount /data "${ODRIVE_REMOTE_MOUNT}"
|
||||||
|
sleep 5s
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function refreshMount() {
|
||||||
|
while true; do
|
||||||
|
echo "" >> /var/log/odriverefresh.log
|
||||||
|
date >> /var/log/odriverefresh.log
|
||||||
|
echo "Initiating Refresh of data" >> /var/log/odriverefresh.log
|
||||||
|
find /data -type d -print0 |xargs -r0 -n1 odrive refresh &>> /var/log/odriverefresh.log
|
||||||
|
echo "" >> /var/log/odriverefresh.log
|
||||||
|
date >> /var/log/odriverefresh.log
|
||||||
|
echo "Completed Refresh of data" >> /var/log/odriverefresh.log
|
||||||
|
sleep 6h;
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
function emptyTrash() {
|
||||||
|
while true; do
|
||||||
|
echo "" >> /var/log/odriverefresh.log
|
||||||
|
date >> /var/log/odriverefresh.log
|
||||||
|
echo "Initiating emptying of trash" >> /var/log/odriverefresh.log
|
||||||
|
odrive emptytrash &>> /var/log/odriverefresh.log
|
||||||
|
echo "" >> /var/log/odriverefresh.log
|
||||||
|
date >> /var/log/odriverefresh.log
|
||||||
|
echo "Completed emptying of trash" >> /var/log/odriverefresh.log
|
||||||
|
sleep 1h;
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
function syncMount() {
|
||||||
|
while true; do
|
||||||
|
echo "" >> /var/log/odrivesync.log
|
||||||
|
date >> /var/log/odrivesync.log
|
||||||
|
echo "Initiating Sync of data" >> /var/log/odrivesync.log
|
||||||
|
find /data -iname '*.cloudf' -print0 -o -iname '*.cloud' -print0 |xargs -r0 -n1 odrive sync &>> /var/log/odrivesync.log
|
||||||
|
echo "" >> /var/log/odrivesync.log
|
||||||
|
date >> /var/log/odrivesync.log
|
||||||
|
echo "Completed Sync of data" >> /var/log/odrivesync.log
|
||||||
|
sleep 5m;
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
function logRotate() {
|
||||||
|
while true; do
|
||||||
|
sleep 24h;
|
||||||
|
cp /var/log/odriveagent.log /var/log/odriveagent.1.log;
|
||||||
|
> /var/log/odriveagent.log;
|
||||||
|
cp /var/log/odrivesync.log /var/log/odrivesync.1.log;
|
||||||
|
> /var/log/odrivesync.log;
|
||||||
|
cp /var/log/odriverefresh.log /var/log/odriverefresh.1.log;
|
||||||
|
> /var/log/odriverefresh.log;
|
||||||
|
done;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
initOneDrive;
|
||||||
|
|
||||||
|
logRotate &
|
||||||
|
PID_LOGROTATE=$!
|
||||||
|
|
||||||
|
refreshMount &
|
||||||
|
PID_ODRIVEREFRESH=$!
|
||||||
|
|
||||||
|
sleep 1m
|
||||||
|
|
||||||
|
syncMount &
|
||||||
|
PID_ODRIVESYNC=$!
|
||||||
|
emptyTrash &
|
||||||
|
PID_ODRIVETRASH=$!
|
||||||
|
|
||||||
|
cat > /app/run.pids <<PIDS
|
||||||
|
PID_ODRIVEAGENT=${PID_ODRIVEAGENT}
|
||||||
|
PID_ODRIVEREFRESH=${PID_ODRIVEREFRESH}
|
||||||
|
PID_ODRIVESYNC=${PID_ODRIVESYNC}
|
||||||
|
PID_ODRIVETRASH=${PID_ODRIVETRASH}
|
||||||
|
PID_LOGROTATE=${PID_LOGROTATE}
|
||||||
|
PIDS
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
if [ -z "${PID_LOGROTATE}" -o ! -e /proc/${PID_LOGROTATE} ]; then
|
||||||
|
date >> /var/log/odriveagent.log
|
||||||
|
echo 'ERROR: odrive log rotator not running' >>/var/log/odriveagent.log
|
||||||
|
break;
|
||||||
|
fi
|
||||||
|
if [ -z "${PID_ODRIVEAGENT}" -o ! -e /proc/${PID_ODRIVEAGENT} ]; then
|
||||||
|
date >> /var/log/odriveagent.log
|
||||||
|
echo 'ERROR: odrive agent not running' >>/var/log/odriveagent.log
|
||||||
|
break;
|
||||||
|
fi
|
||||||
|
if [ -z "${PID_ODRIVEREFRESH}" -o ! -e /proc/${PID_ODRIVEREFRESH} ]; then
|
||||||
|
date >> /var/log/odriveagent.log
|
||||||
|
echo 'ERROR: odrive refresh not running' >>/var/log/odriveagent.log
|
||||||
|
break;
|
||||||
|
fi
|
||||||
|
if [ -z "${PID_ODRIVETRASH}" -o ! -e /proc/${PID_ODRIVETRASH} ]; then
|
||||||
|
date >> /var/log/odriveagent.log
|
||||||
|
echo 'ERROR: odrive empty trash not running' >>/var/log/odriveagent.log
|
||||||
|
break;
|
||||||
|
fi
|
||||||
|
if [ -z "${PID_ODRIVESYNC}" -o ! -e /proc/${PID_ODRIVESYNC} ]; then
|
||||||
|
date >> /var/log/odriveagent.log
|
||||||
|
echo 'ERROR: odrive sync not running' >>/var/log/odriveagent.log
|
||||||
|
break;
|
||||||
|
fi
|
||||||
|
sleep 1m;
|
||||||
|
done
|
Loading…
Reference in New Issue