diff --git a/data/docker/Dockerfile b/data/docker/Dockerfile index 2a09556..d7f7f6e 100644 --- a/data/docker/Dockerfile +++ b/data/docker/Dockerfile @@ -1,20 +1,94 @@ FROM phusion/baseimage:0.9.18 -EXPOSE 445 -EXPOSE 139 -EXPOSE 135 +EXPOSE 111 2049 60934 43440 55392 53559 875 CMD ["/sbin/my_init"] -RUN apt-get update && apt-get install -y samba smbclient +# The enormous RUN block is needed to reduce resulting container size +# as it prevents docker from snapshotting container before all unneeded +# packages are removed. It is made by combining several separate steps: +# setting up necessary packages, compiling and setting up ganesha, +# setting up samba and removing unneeded packages. +RUN apt-get update && apt-get install -y \ + bison \ + build-essential \ + cmake \ + dbus \ + doxygen \ + flex \ + git-core \ + libcephfs-dev \ + libdbus-1-dev \ + libgssglue-dev \ + libkrb5-dev \ + libtirpc1 \ + libssl-dev \ + nfs-common \ + pkg-config \ + portmap \ + python-dbus \ + samba \ + smbclient \ + uuid-dev &&\ + mkdir -p /shares &&\ + chmod 0777 /shares &&\ + mkdir -pv /var/run/dbus &&\ + cd /usr/src &&\ + git clone https://github.com/nfs-ganesha/nfs-ganesha.git &&\ + cd nfs-ganesha &&\ + git checkout -b V2.3-stable origin/V2.3-stable &&\ + git submodule update --init &&\ + mkdir -p build &&\ + cd build &&\ + cmake -DUSE_DBUS=ON -DUSE_FSAL_LUSTRE=OFF ../src &&\ + make &&\ + make install &&\ + make clean &&\ + cp /usr/src/nfs-ganesha/src/scripts/ganeshactl/org.ganesha.nfsd.conf \ + /etc/dbus-1/system.d &&\ + rm -rf /usr/src/nfs-ganesha &&\ + adduser --disabled-password --gecos '' master &&\ + (echo pwd; echo pwd) | smbpasswd -a -s master &&\ + sed -i "/\[global\]/a\ \ \ include = registry" /etc/samba/smb.conf &&\ + apt-get clean &&\ + mkdir -p /etc/ganesha &&\ + mkdir -p /etc/service/rpcbind &&\ + mkdir -p /etc/service/ganesha &&\ + mkdir -p /etc/service/samba &&\ + mkdir -p /etc/service/dbus &&\ + apt-get purge -y \ + bison \ + build-essential \ + cmake \ + cmake-data \ + comerr-dev \ + cpp \ + cpp-4.8 \ + doxygen \ + dpkg-dev \ + flex \ + g++ \ + g++-4.8 \ + gcc \ + gcc-4.8 \ + git \ + git-core \ + git-man \ + libc6-dev \ + libcephfs-dev \ + libfl-dev \ + libgcc-4.8-dev \ + libkrb5-dev \ + libstdc++-4.8-dev \ + linux-libc-dev \ + make \ + manpages \ + manpages-dev \ + uuid-dev &&\ + apt-get autoremove -y -RUN mkdir /shares -RUN chmod 0777 /shares - -RUN adduser --disabled-password --gecos '' master -RUN (echo pwd; echo pwd) | smbpasswd -a -s master -RUN sed -i "/\[global\]/a\ \ \ include = registry" /etc/samba/smb.conf -RUN apt-get clean - -entrypoint ["/usr/sbin/smbd"] -cmd ["-F", "-S"] +ADD dbus.sh /etc/service/dbus/run +ADD rpcbind.sh /etc/service/rpcbind/run +ADD ganesha.sh /etc/service/ganesha/run +ADD ganesha.conf /etc/ganesha/ganesha.conf +ADD samba.sh /etc/service/samba/run diff --git a/data/docker/dbus.sh b/data/docker/dbus.sh new file mode 100755 index 0000000..67520ce --- /dev/null +++ b/data/docker/dbus.sh @@ -0,0 +1,2 @@ +#!/bin/sh +/bin/dbus-daemon --nofork --system diff --git a/data/docker/ganesha.conf b/data/docker/ganesha.conf new file mode 100644 index 0000000..684dace --- /dev/null +++ b/data/docker/ganesha.conf @@ -0,0 +1,17 @@ +EXPORT +{ + Export_ID = 0; + Path = "/shares"; + Pseudo = "/shares"; + Squash = No_Root_Squash; + Transport_Protocols = TCP; + Disable_ACL = True; + SecType = "none"; + CLIENT { + Clients = *; + Access_Type = RO; + } + FSAL { + Name = VFS; + } +} diff --git a/data/docker/ganesha.sh b/data/docker/ganesha.sh new file mode 100755 index 0000000..c533dbf --- /dev/null +++ b/data/docker/ganesha.sh @@ -0,0 +1,2 @@ +#!/bin/sh +ganesha.nfsd -L /var/log/ganesha.log -F diff --git a/data/docker/rpcbind.sh b/data/docker/rpcbind.sh new file mode 100755 index 0000000..d38b358 --- /dev/null +++ b/data/docker/rpcbind.sh @@ -0,0 +1,4 @@ +#!/bin/sh +cd / +echo Starting rpcbind... +/sbin/rpcbind -d diff --git a/data/docker/samba.sh b/data/docker/samba.sh new file mode 100755 index 0000000..615a70b --- /dev/null +++ b/data/docker/samba.sh @@ -0,0 +1,2 @@ +#!/bin/sh +/usr/sbin/smbd -F -S