abraunegg-onedrive/docs/Docker.md
abraunegg 7cf2912d2d
Rework directory layout and refactor MD files for readability (#523)
* Move lots of stuff into contrib directory to clean up root folder
* Update autoconf files for new location of some files
* Refactor README split and move to docs directory
* Update INSTALL.md
* Update Makefile.in
* Install docs from new location
* Uninstall docs correctly
* Update Dockerfile
* Fix up Dockerfile spacing
* Move systemd stuff to contrib
* Move docker specific stuff to contrib/docker, update docs
* Fix Alpine and Stretch docker files
* Update configure after changed file locations
* Update INSTALL.md to include pkg-config as requirement
* Move also entrypoint.sh to contrib/docker
* Update 'min-notif-changes' to 'min-notify-changes' which was missed in PR #467
* Update to add --sync-root-files to usage.md and man page
* Update usage.md to include --auth-files ARG details
2019-06-11 18:40:05 +10:00

3.8 KiB

onedrive docker image

Thats right folks onedrive is now dockerized ;)

This container offers simple monitoring-mode service for 'Free Client for OneDrive on Linux'.

Usage instructions

0. Install docker under your own platform's instructions

1. Pull the image

docker pull driveone/onedrive

NOTE: SELinux context needs to be configured or disabled for Docker, to be able to write to OneDrive host directory.

2. Prepare required stuff

Onedrive needs two volumes. One of them is the config volume.

If you dont't need an extra config file, You can create a docker volume:

docker volume create onedrive_conf

This will create a docker volume labeled 'onedrive_conf', which we will use it later.

The second one is your data folder that needs to sync with. Keep in mind that:

  • The owner of the folder must not be root

  • The owner have permission to its parent directory
    (because onedrive will try to setup a monitor for the sync folder).

3. First run

Onedrive also needs to be authorized with your account.
This is done by running docker in interactive mode.

make sure to change onedriveDir to your own.

onedriveDir="${HOME}/OneDrive"
docker run -it --restart unless-stopped --name onedrive -v onedrive_conf:/onedrive/conf -v "${onedriveDir}:/onedrive/data" driveone/onedrive
  • You will be asked to open a specific link using your web browser
  • login into your Microsoft Account and give the application the permission
  • After giving the permission, you will be redirected to a blank page.
  • Copy the URI of the blank page into the application.

If your onedrive is working as expected, you can detach from the container with Ctrl+p, Ctrl+q.

4. Status, stop, and restart

Check if monitor service is running

docker ps -f name=onedrive

Show monitor run logs

docker logs onedrive

Stop running monitor

docker stop onedrive

Resume monitor

docker start onedrive

Unregister onedrive monitor

docker rm -f onedrive

5. Edit the config

Onedrive should run in default configuration, but however you can change your configuration.

First download the default config from here
Then put it into your onedrive_conf volume path, which can be found with:

docker volume inspect onedrive_conf

Or you can map your own config folder to config volume (copy stuffs from docker volume first)

The detailed document for the config can be found here: additional-configuration

Run or update with one script

If you are experienced with docker and onedrive, you can use the following script:

# Update onedriveDir with correct existing OneDrive directory path
onedriveDir="${HOME}/OneDrive"

firstRun='-d'
docker pull driveone/onedrive
docker inspect onedrive_conf > /dev/null || { docker volume create onedrive_conf; firstRun='-it'; }
docker inspect onedrive > /dev/null && docker rm -f onedrive
docker run $firstRun --restart unless-stopped --name onedrive -v onedrive_conf:/onedrive/conf -v "${onedriveDir}:/onedrive/data" driveone/onedrive

Build instructions

You can also build your own image instead of pulling the one from dockerhub:

git clone https://github.com/abraunegg/onedrive
cd onedrive
docker build . -t local-onedrive -f contrib/docker/Dockerfile

There are alternate, smaller images available by building Dockerfile-stretch or Dockerfile-alpine. These multi-stage builder pattern Dockerfiles require Docker version at least 17.05.

docker build . -t local-ondrive-stretch -f contrib/docker/Dockerfile-stretch

or

docker build . -t local-ondrive-alpine -f contrib/docker/Dockerfile-alpine