https://github.com/cdent/tankdock
Tank in Docker
https://github.com/cdent/tankdock
Last synced: about 2 months ago
JSON representation
Tank in Docker
- Host: GitHub
- URL: https://github.com/cdent/tankdock
- Owner: cdent
- License: other
- Created: 2014-07-19T14:38:40.000Z (almost 12 years ago)
- Default Branch: master
- Last Pushed: 2014-08-10T19:40:25.000Z (almost 12 years ago)
- Last Synced: 2025-10-04T15:43:53.359Z (8 months ago)
- Language: Python
- Size: 156 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# What
TankDock is [Tank](https://tank.peermore.com/) in
[Docker](https://docker.com/) so that people can run their own Tank
service. If you don't want to run your own, feel free to use the
[existing public server](https://tank.peermore.com/).
When fully working the service will run under an nginx+uwsgi combination,
with a small memcached, and storage and logging to local disk.
# Caveats
Please note that at this time there are a few issues which make this
not ready for prime time (see Todo below as well):
* Your content is not stored in persistent storage. When you shut
down your container, your content is **gone**.
* SSL should be used whenever oauth2 is being used.
# Status
Still under development but potentially ready for some testing by the
strong of heart and mind.
# Structure
This repo is divided into several parts:
* The top level directory contains a Dockerfile for building (on
Fedora) the basic requirements for an _unconfigured_ Tank
installation.
The Dockerfile installs the necessary RPMs and Python packages
and creates the basic directory structure for a tank installation.
It also `ADD`s the necessary configuration files and service
start scripts (`runner.sh`).
Eventually this container will be registered in the Docker hub.
* Two submodules: `tank` and `tiddlywebplugins.oauth` for Python
code that is not yet available on PyPI.
* A `runner` subdirectory that contains another Dockerfile which
uses the unconfigured container s the base for creating a
configured installation.
This directory contains a `tiddlywebconfig.py` that must be
customized for your specific use (see below).
# Making Your Own
First, clone the repo, cd into it and:
```
git submodule init
git submodule update
```
then:
Currently, building a container with a custom Tank in it is a two
step process. If you are not familiar with Docker, [the
docs](http://docs.docker.com/) are good.
## 1: Build a base container
The top-level Dockerfile describes a container with all the
necessary software, filesystem structure, and generic configuration
to make a running system. Eventually this container will be
available for download so this step will not be required. For now,
to build your own, from within the checked out repository run:
```
sudo docker build -t cdent/tankdock .
```
This will churn away for a while gathering various pieces.
When it is done you will have a container tagged "cdent/tankdock"
available locally and you're ready for step 2.
## 2: Build a custom Tank
Change to the directory `runner`. In there is a `tiddlywebconfig.py`
file which must be edited to set custom settings. The comments
describe what needs to be set. After "# End of Customizations"
nothing needs to be changed. What is being done here is:
* Setting the hostname for the service (this is the externally
addressable hostname).
* Setting a secret key for cookies.
* Setting the id and secret key for _at least_ one oauth2 identity
provider. GitHub is [relatively easy to set
up](https://github.com/settings/applications).
* Setting [AWS](http://aws.amazon.com/) S3 bucket settings.
Once the settings have been made another container needs to be built:
```
sudo docker build -t cdent/tank .
```
If you used a different name building the base container, change the
"FROM" line in the Dockerfile.
Now you have a Tank you can run.
# Run
To run the customer container you need to decide what port you would
like to map to the web server inside the container. I use `80`. In
order for 80 to work no other web server can be running.
```
sudo docker run -t -i -p 80:80 cdent/tank
```
If you see something like:
```
spawned uWSGI worker 1 (pid: 24, cores: 10)
spawned uWSGI worker 2 (pid: 33, cores: 10)
```
you should be able to go to the host URL you configured and see
Tank.
# Todo
* Mount local disk for tiddler storage and logging.
* SSL. We must have it if oauth is being used.
* Making S3 storage for binaries optional.
* Getting twsock in the mix for websocket notifications.
* Initializing search index at start time.
* twikifier
## Perhaps
* Only run uwsgi, have something external to the container do HTTP.
# Who
Copyright 2014 Peermore Limited
BSD License