mirror of
https://github.com/rclone/rclone.git
synced 2025-12-11 22:14:05 +01:00
serve/docker: build docker plugin for multiple platforms #5668
Fixes #5462 Co-authored-by: Ivan Andreev <ivandeex@gmail.com>
This commit is contained in:
committed by
Ivan Andreev
parent
4b1ada2d51
commit
015b250905
25
contrib/docker-plugin/managed/Dockerfile
Normal file
25
contrib/docker-plugin/managed/Dockerfile
Normal file
@@ -0,0 +1,25 @@
|
||||
ARG BASE_IMAGE=rclone/rclone:latest
|
||||
FROM ${BASE_IMAGE} as binaries
|
||||
|
||||
# build plugin image
|
||||
FROM alpine:latest
|
||||
|
||||
# put rclone in /usr/bin, reserve /usr/local/bin for plugin wrappers
|
||||
COPY --from=binaries /usr/local/bin/rclone /usr/bin/rclone
|
||||
|
||||
RUN mkdir -p /data/config /data/cache /mnt \
|
||||
&& apk --no-cache add ca-certificates fuse tzdata \
|
||||
&& echo "user_allow_other" >> /etc/fuse.conf \
|
||||
&& rclone version
|
||||
|
||||
ENV RCLONE_CONFIG=/data/config/rclone.conf
|
||||
ENV RCLONE_CACHE_DIR=/data/cache
|
||||
ENV RCLONE_BASE_DIR=/mnt
|
||||
ENV RCLONE_VERBOSE=0
|
||||
|
||||
ENV HTTP_PROXY=
|
||||
ENV HTTPS_PROXY=
|
||||
ENV NO_PROXY=
|
||||
|
||||
WORKDIR /data
|
||||
ENTRYPOINT ["rclone", "serve", "docker"]
|
||||
81
contrib/docker-plugin/managed/config.json
Normal file
81
contrib/docker-plugin/managed/config.json
Normal file
@@ -0,0 +1,81 @@
|
||||
{
|
||||
"description": "Rclone volume plugin for Docker",
|
||||
"documentation": "https://rclone.org/docker",
|
||||
"interface": {
|
||||
"socket": "rclone.sock",
|
||||
"types": ["docker.volumedriver/1.0"]
|
||||
},
|
||||
"linux": {
|
||||
"capabilities": [
|
||||
"CAP_SYS_ADMIN"
|
||||
],
|
||||
"devices": [
|
||||
{
|
||||
"path": "/dev/fuse"
|
||||
}
|
||||
]
|
||||
},
|
||||
"network": {
|
||||
"type": "host"
|
||||
},
|
||||
"entrypoint": ["rclone", "serve", "docker"],
|
||||
"workdir": "/data",
|
||||
"args": {
|
||||
"name": "args",
|
||||
"value": [],
|
||||
"settable": ["value"]
|
||||
},
|
||||
"env": [
|
||||
{
|
||||
"name": "RCLONE_VERBOSE",
|
||||
"value": "0",
|
||||
"settable": ["value"]
|
||||
},
|
||||
{
|
||||
"name": "RCLONE_CONFIG",
|
||||
"value": "/data/config/rclone.conf"
|
||||
},
|
||||
{
|
||||
"name": "RCLONE_CACHE_DIR",
|
||||
"value": "/data/cache"
|
||||
},
|
||||
{
|
||||
"name": "RCLONE_BASE_DIR",
|
||||
"value": "/mnt"
|
||||
},
|
||||
{
|
||||
"name": "HTTP_PROXY",
|
||||
"value": "",
|
||||
"settable": ["value"]
|
||||
},
|
||||
{
|
||||
"name": "HTTPS_PROXY",
|
||||
"value": "",
|
||||
"settable": ["value"]
|
||||
},
|
||||
{
|
||||
"name": "NO_PROXY",
|
||||
"value": "",
|
||||
"settable": ["value"]
|
||||
}
|
||||
],
|
||||
"mounts": [
|
||||
{
|
||||
"name": "config",
|
||||
"source": "/var/lib/docker-plugins/rclone/config",
|
||||
"destination": "/data/config",
|
||||
"type": "bind",
|
||||
"options": ["rbind"],
|
||||
"settable": ["source"]
|
||||
},
|
||||
{
|
||||
"name": "cache",
|
||||
"source": "/var/lib/docker-plugins/rclone/cache",
|
||||
"destination": "/data/cache",
|
||||
"type": "bind",
|
||||
"options": ["rbind"],
|
||||
"settable": ["source"]
|
||||
}
|
||||
],
|
||||
"propagatedMount": "/mnt"
|
||||
}
|
||||
19
contrib/docker-plugin/systemd/docker-volume-rclone.service
Normal file
19
contrib/docker-plugin/systemd/docker-volume-rclone.service
Normal file
@@ -0,0 +1,19 @@
|
||||
[Unit]
|
||||
Description=Docker Volume Plugin for rclone
|
||||
Requires=docker.service
|
||||
Before=docker.service
|
||||
After=network.target
|
||||
Requires=docker-volume-rclone.socket
|
||||
After=docker-volume-rclone.socket
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/rclone serve docker
|
||||
ExecStartPre=/bin/mkdir -p /var/lib/docker-volumes/rclone
|
||||
ExecStartPre=/bin/mkdir -p /var/lib/docker-plugins/rclone/config
|
||||
ExecStartPre=/bin/mkdir -p /var/lib/docker-plugins/rclone/cache
|
||||
Environment=RCLONE_CONFIG=/var/lib/docker-plugins/rclone/config/rclone.conf
|
||||
Environment=RCLONE_CACHE_DIR=/var/lib/docker-plugins/rclone/cache
|
||||
Environment=RCLONE_VERBOSE=1
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@@ -0,0 +1,8 @@
|
||||
[Unit]
|
||||
Description=Docker Volume Plugin for rclone
|
||||
|
||||
[Socket]
|
||||
ListenStream=/run/docker/plugins/rclone.sock
|
||||
|
||||
[Install]
|
||||
WantedBy=sockets.target
|
||||
Reference in New Issue
Block a user