Skip to content
This repository has been archived by the owner on Dec 9, 2019. It is now read-only.
/ docker-pinry Public archive

An easy way to get a Pinry instance up and running using Docker.

License

Notifications You must be signed in to change notification settings

pinry/docker-pinry

Repository files navigation

docker-pinry

https://travis-ci.org/pinry/docker-pinry.svg?branch=master

A nice and easy way to get a pinry instance up and running using docker. For help on getting started with docker see the official getting started guide. For more information on Pinry and a demo check out it's website.

Getting docker-pinry

Running this will get the latest version of both docker-pinry and pinry itself:

git clone https://github.com/pinry/docker-pinry
cd docker-pinry
./bootstrap.sh

Now you can start your container by command like this:

# this is where your database and pins localted
mkdir data
# use absolute path for docker to avoid using default data-volume (we use directory instead)
./start_docker.sh `readlink -f data`

Please visit http://your-ip to visit your instance and register a new account, enjoy it.

Configuring docker-pinry

Enable signups for new users by editing pinry/local_settings.py:

ALLOW_NEW_REGISTRATIONS = True

Additional pinry configuration settings

Building docker-pinry again

Running this will build you a docker image with the latest version of both docker-pinry and pinry itself:

./build_docker.sh

Running docker-pinry in manual way

Running the start command for the first time will setup your production secret key, database and static files. It is important that you decide what port you want and what location on the host machine you wish to store your files. If this is the only thing running on your system and you wish to make it public without a proxy then you can set -p=80:80. The setting -p=10000:80 assumes you are wanting to proxy to this instance using something like nginx. Also note that you must have your host mount directory created first (mkdir -p /mnt/pinry)

Then you have two choice to run docker-pinry

Fist one, with automaticlly configured default arguments:

./start_docker.sh /mnt/pinry

Second one, start docker by hand with customized arguments:

SETTINGS_PATH=$(readlink -f ./pinry/local_settings.py) \
DATA_PATH=$(readlink -f /mnt/pinry) \
sudo docker run -d=true -p=10000:80 \
  -v=${DATA_PATH}:/data \
  -v=${SETTINGS_PATH}:/srv/www/pinry/pinry/settings/local_settings.py \
  pinry/pinry /scripts/start.sh

If it's the first run it'll take a few seconds but it will print out your container ID which should be used to start and stop the container in the future using the commands:

sudo docker start <container_id>
sudo docker stop <container_id>

Running docker-pinry with docker-compose

Just config your docker-compose.yml and then run:

sudo pip install -U docker-compose
sudo docker-compose up -d

Notes on the run commands

  • -v is the volume you are mounting -v=host_dir:docker_dir
  • pinry/pinry is simply what I called my docker build of this image
  • -d=true allows this to run cleanly as a daemon, remove for debugging
  • -p is the port it connects to, -p=host_port:docker_port
  • Follow comments in local_settings.py to understand how the site configured

Using docker-pinry

Open a browser to http://<YOUR-HOSTNAME>:10000 and register. Replace YOUR-HOSTNAME with the name of the machine docker is running on, likely localhost.

You can map http://localhost:10000 to your outer nginx for SSL or just change the default port-mapping to 80:80 to serve your site directly, just enjoy!

Why include nginx and not just map to gunicorn directly?

Because gunicorn/django can't serve static files very well and it is unwise to do so for security reasons. I built this so that people can have a full hosted solution in a container. If you have a host machine running nginx then of course there is no point to run nginx in the container as well, you can simply disable nginx, map gunicorn to a port and then set your host machine's nginx to display your media and static files since that directory is shared between the container and host.

Why use sqlite3?

Because it has a very low resource cost and most pinry websites are small personal ones. Why have a full on database for that? If you need more power than you can easily modify the pinry/local_settings.py to point to a stronger database solution.

About

An easy way to get a Pinry instance up and running using Docker.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published