mirror of
https://github.com/rclone/rclone.git
synced 2026-01-06 18:43:50 +00: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
@@ -1,35 +0,0 @@
|
||||
ARG BASE_IMAGE=rclone/rclone:latest
|
||||
ARG BUILD_PLATFORM=linux/amd64
|
||||
ARG TARGET_PLATFORM=linux/amd64
|
||||
|
||||
# temporary build image
|
||||
FROM --platform=${BUILD_PLATFORM} golang:alpine AS BUILD_ENV
|
||||
|
||||
COPY . /src
|
||||
WORKDIR /src
|
||||
|
||||
RUN apk add --no-cache make git bash && \
|
||||
CGO_ENABLED=0 \
|
||||
GOARCH=$(echo ${TARGET_PLATFORM} | cut -d '/' -f2) \
|
||||
make rclone
|
||||
|
||||
# plugin image
|
||||
FROM ${BASE_IMAGE}
|
||||
|
||||
COPY --from=BUILD_ENV /src/rclone /usr/local/bin/rclone
|
||||
|
||||
RUN mkdir -p /data/config /data/cache /mnt \
|
||||
&& /usr/local/bin/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 ["/usr/local/bin/rclone"]
|
||||
CMD ["serve", "docker"]
|
||||
@@ -1,81 +0,0 @@
|
||||
{
|
||||
"description": "Rclone volume plugin for Docker",
|
||||
"documentation": "https://rclone.org/",
|
||||
"interface": {
|
||||
"socket": "rclone.sock",
|
||||
"types": ["docker.volumedriver/1.0"]
|
||||
},
|
||||
"linux": {
|
||||
"capabilities": [
|
||||
"CAP_SYS_ADMIN"
|
||||
],
|
||||
"devices": [
|
||||
{
|
||||
"path": "/dev/fuse"
|
||||
}
|
||||
]
|
||||
},
|
||||
"network": {
|
||||
"type": "host"
|
||||
},
|
||||
"entrypoint": ["/usr/local/bin/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"
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
[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
|
||||
@@ -1,8 +0,0 @@
|
||||
[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