1
0
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:
Thomas Stachl
2021-07-15 15:35:54 -07:00
committed by Ivan Andreev
parent 4b1ada2d51
commit 015b250905
8 changed files with 95 additions and 93 deletions

View File

@@ -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"]

View File

@@ -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"
}

View File

@@ -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

View File

@@ -1,8 +0,0 @@
[Unit]
Description=Docker Volume Plugin for rclone
[Socket]
ListenStream=/run/docker/plugins/rclone.sock
[Install]
WantedBy=sockets.target