forked from janeczku/docker-dropbox
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathDockerfile
58 lines (51 loc) · 2.5 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
FROM debian:buster
MAINTAINER Kelvin Foo <[email protected]>
ENV DEBIAN_FRONTEND noninteractive
COPY dropbox_2019.02.14_amd64.deb /tmp/dropbox.deb
# Following 'How do I add or remove Dropbox from my Linux repository?' - https://www.dropbox.com/en/help/246
RUN apt-get -qqy update \
&& apt-get install -qqy /tmp/dropbox.deb \
&& apt-get install -qqy gnupg \
&& apt-key adv --keyserver hkp://pool.sks-keyservers.net --recv-keys FC918B335044912E \
# Note 'ca-certificates' dependency is required for 'dropbox start -i' to succeed
&& apt-get -qqy install ca-certificates curl python3-gpg dropbox \
libatomic1 libglapi-mesa libxcb-glx0 libxcb-dri2-0 libxcb-dri3-0 libxcb-present0 libxcb-sync1 libxshmfence1 libxxf86vm1 \
expect \
# Perform image clean up.
&& apt-get -qqy autoclean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
# Create service account and set permissions.
&& groupadd dropbox \
&& useradd -m -d /dbox -c "Dropbox Daemon Account" -s /usr/sbin/nologin -g dropbox dropbox
# Dropbox is weird: it insists on downloading its binaries itself via 'dropbox
# start -i'. So we switch to 'dropbox' user temporarily and let it do its thing.
USER dropbox
RUN mkdir -p /dbox/.dropbox /dbox/.dropbox-dist /dbox/Dropbox /dbox/base \
&& expect -c 'set timeout 300; spawn dropbox start -i; expect "download the proprietary daemon"; send "y\n"; expect "Done!"; exit'
# Switch back to root, since the run script needs root privs to chmod to the user's preferrred UID
USER root
# Dropbox has the nasty tendency to update itself without asking. In the processs it fills the
# file system over time with rather large files written to /dbox and /tmp. The auto-update routine
# also tries to restart the dockerd process (PID 1) which causes the container to be terminated.
RUN mkdir -p /opt/dropbox \
# Prevent dropbox to overwrite its binary
&& mv /dbox/.dropbox-dist/dropbox-lnx* /opt/dropbox/ \
&& mv /dbox/.dropbox-dist/dropboxd /opt/dropbox/ \
&& mv /dbox/.dropbox-dist/VERSION /opt/dropbox/ \
&& rm -rf /dbox/.dropbox-dist \
&& install -dm0 /dbox/.dropbox-dist \
# Prevent dropbox to write update files
&& chmod u-w /dbox \
&& chmod o-w /tmp \
&& chmod g-w /tmp \
# Allow read access to dropbox distribution
&& chmod -R og+r /opt/dropbox \
# Prepare for command line wrapper
&& mv /usr/bin/dropbox /usr/bin/dropbox-cli
# Install init script and dropbox command line wrapper
COPY run /root/
COPY dropbox /usr/bin/dropbox
WORKDIR /dbox/Dropbox
EXPOSE 17500
VOLUME ["/dbox/.dropbox", "/dbox/Dropbox"]
ENTRYPOINT ["/root/run"]