I’m messing around with OwnCloud at the moment, a solution to provide cloud-like access to files and folders through a webapp using your own local storage. As is my want, I’m doing it in Docker.
There’s a minor catch though - the official OwnCloud Docker image does not include
smbclient, which is required to provide access to Samba shares.
Here’s how to take care of that.
FROM owncloud:latest RUN set -x; \ apt-get update \ && apt-get install -y smbclient \ && rm -rf /var/lib/apt/lists/* \ && rm -rf /var/cache/apt/archives/*
The above Dockerfile will use the current
owncloud:latest image from Docker Hub, and then install
smbclient into it. You want to do the update, install and cleanup in one step so it gets saved as only one layer in the Docker filesystem, saving space.
You can then put that together with the official MySQL Docker Image and a few volumes to have a fully working OwnCloud setup with
version: '2' services: mysql: image: mysql:latest restart: unless-stopped environment: - MYSQL_ROOT_PASSWORD=passwordgoeshere volumes: - ./data/mysql:/var/lib/mysql:rw,Z owncloud: hostname: owncloud.localdomain build: owncloud/ restart: unless-stopped environment: - MYSQL_ROOT_PASSWORD=passwordgoeshere ports: - 8300:80 volumes: - ./data/data:/var/www/html/data:rw,Z - ./data/config:/var/www/html/config:rw,Z - ./data/apps:/var/www/html/apps:rw,Z depends_on: - mysql
Create the directories that are mounted there, set the password to something sensible, and
docker-compose up !
One thing though. OwnCloud doesn’t have any built-in account lockout policy, so I wouldn’t go putting this as it is on the ‘Net just yet. You’ll want something in front of it for security, like nginx. You’ll also want HTTPS if you’re doing that.
More on that later.