- [Docker](https://docker.com/) is an open source project to pack, ship and run any Linux application in a lighter weight, faster container than a traditional virtual machine.
- Docker makes it much easier to deploy [a Seafile server](https://github.com/haiwen/seafile) on your servers and keep it updated.
- The base image configures Seafile with the Seafile team's recommended optimal defaults.
### Getting Started
The simplest way to get started is via the **simple** template, which can be installed within servera minutes.
This directory is for container definitions for your Seafile containers. You are in charge of this directory, it ships empty.
#### `/samples`
Sample container definitions you may use to bootstrap your environment. You can copy templates from here into the bootstrap directory.
#### `/shared`
Placeholder spot for shared volumes. You may elect to store certain persistent information outside of a container, in our case we keep various logfiles and upload directory outside. This allows you to rebuild containers easily without losing important information.
- /shared/db: This is the data directory for mysql server
- /shared/seafile: This is the directory for seafile server configuration and data.
- /shared/logs: This is the directory for logs.
- /shared/logs/var-log: This is the directory that would be mounted as `/var/log` inside the container. For example, you can find the nginx logs in `shared/logs/var-log/nginx/`.
- /shared/logs/seafile: This is the directory that would contain the log files of seafile server processes. For example, you can find seaf-server logs in `shared/logs/seafile/seafile.log`.
#### `/templates`
Various jinja2 templates used for seafile server configuration.
The Docker repository will always contain the latest built version at: https://hub.docker.com/r/seafileorg/server/, you should not need to build the base image.
The base directory contains a single bash script which is used to manage containers. You can use it to "bootstrap" a new container, enter, start, stop and destroy a container.
```
Usage: launcher COMMAND
Commands:
start: Start/initialize a container
stop: Stop a running container
restart: Restart a container
destroy: Stop and remove a container
enter: Use docker exec to enter a container
logs: Docker logs for container
memconfig: Configure sane defaults for available RAM
bootstrap: Bootstrap a container for the config based on a template
rebuild: Rebuild a container (destroy old, bootstrap, start new)
```
If the environment variable "SUPERVISED" is set to true, the container won't be detached, allowing a process monitoring tool to manage the restart behaviour of the container.
### Container Configuration
The beginning of the container definition can contain the following "special" sections:
#### port mapping:
```conf
server.port_mappings = 80:80,443:443
```
### Troubleshooting
View the container logs: `./launcher logs`
Spawn a shell inside your container using `./launcher enter`. This is the most foolproof method if you have host root access.
### Developing with Vagrant
If you are looking to make modifications to this repository, you can easily test
out your changes before committing, using the magic
of [Vagrant](http://vagrantup.com). Install Vagrant as
Lots of the design of this repo is borrowed from the excellent [discourse-docker](https://github.com/discourse/discourse_docker) project. Thanks for their insipiration!