Taiga is a simple, beautiful project management tool for startups and agile developers & designers.
Go to file
2017-09-20 22:59:44 +02:00
db first commit 2016-04-10 19:21:26 +02:00
seeds insert throttling for user-update to prevent errors 2017-09-08 16:18:12 +02:00
docker-compose.yml changed taiga path to /opt and improved first-run checks 2016-04-12 02:25:18 +02:00
Dockerfile updates 2017-06-27 23:27:00 +02:00
Jenkinsfile raise memory limit for CI 2017-09-20 22:59:44 +02:00
launch fixes 2017-09-08 18:58:23 +02:00
LICENSE Initial commit 2016-04-10 19:00:52 +02:00
Makefile add a CI part 2017-09-20 00:26:24 +02:00
postgres.env first commit 2016-04-10 19:21:26 +02:00
README.md add quick launch readme 2017-09-08 18:58:35 +02:00
robots.txt make taiga grsec-friendly 2016-05-20 18:12:19 +02:00
taiga-db.env first commit 2016-04-10 19:21:26 +02:00
taiga.env fixes 2017-05-07 22:53:45 +02:00
TODO.md changed taiga path to /opt and improved first-run checks 2016-04-12 02:25:18 +02:00

Taiga in Docker

This container allows you to run Taiga in a Docker container.

What is Taiga?

Taiga is a project management application that can handle both simple and complex projects for startups, software developers, and other target teams. It tracks the progress of a project. Taiga's design is clean and elegant design—something that is supposed to be "beautiful to look at all day long." With Taiga, you can use either Kanban or Scrum template, or both. Backlogs are shown as a running list of all features and User Stories added to the project.

Taiga integrates video conferencing functions with the use of third party services from Talky.io and Appear.in. Group and private chat is done via HipChat.

Dockerfile

The Dockerfile performs the following steps:

  • install the OS & Python dependencies required to run Taiga Django backend.
  • install nginx - to serve the content including static assests which Django app should not be handling.
  • install circus - a process & socket manager for the Python web application.
  • install gunicorn - a Python Web Server Gateway Interface (WSGI) HTTP Server to serve dynamic content.
  • create taiga user for running circus & gunicorn.
  • clone stable branches of the taiga backend and frontend.
  • copy templates which will be then processed by the launch script when the container starts.

Running Taiga

I recommend to use Docker Compose for running the Taiga.

Docker Compose

Below is a docker compose file as example

docker-compose.yml

version: '2'

volumes:
  postgres_data: {}
  taiga_static: {}
  taiga_media: {}

networks:
  backend: {}

services:
  postgres:
    # https://hub.docker.com/_/postgres/
    image: postgres
    networks:
      - backend
    volumes:
      - postgres_data:/var/lib/postgresql/data
      - ./db:/docker-entrypoint-initdb.d:ro
    env_file:
      - ./postgres.env
      - ./taiga-db.env

  taiga:
    # https://hub.docker.com/r/andrey01/taiga
    image: andrey01/taiga
    # build: .
    networks:
      - backend
    ports:
      - 80:80
    volumes:
      - taiga_static:/opt/taiga/static
      - taiga_media:/opt/taiga/media
    env_file:
      - ./taiga.env
      - ./taiga-db.env
    environment:
      - TZ=Europe/Amsterdam
    depends_on:
      - postgres

The following file is required so that Postgres will create taiga database that is used by the Taiga backend.

db/init-taiga-db.sh

#!/bin/bash
set -e

psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" <<-EOSQL
    CREATE USER $TAIGA_DB_USER;
    CREATE DATABASE $TAIGA_DB_NAME;
    GRANT ALL PRIVILEGES ON DATABASE $TAIGA_DB_NAME TO $TAIGA_DB_USER;
    ALTER USER $TAIGA_DB_USER WITH PASSWORD '$TAIGA_DB_PASSWORD';
EOSQL

The environment variables

This file will defines a superuser for Postgres.

postgres.env

POSTGRES_USER=admin
POSTGRES_PASSWORD=admin

This file defines individual settings for Taiga.

taiga.env

GUNICORN_WORKERS=1
SITE_URI=http://taiga.mydomain.com
PUBLIC_REGISTER=true
ADMIN_EMAIL=admin@mydomain.com
NOREPLY_EMAIL=no-reply@mydomain.com
EMAIL_HOST=smtp.gmail.com
EMAIL_HOST_PORT=587
EMAIL_USE_TLS=True
# EMAIL_HOST_USER=youremail@gmail.com
# EMAIL_HOST_PASSWORD=yourpassword

This file defines the database settings for Taiga.

taiga-db.env

TAIGA_DB_USER=taiga
TAIGA_DB_NAME=taiga
TAIGA_DB_PASSWORD=secretpassword
TAIGA_DB_HOST=postgres
TAIGA_DB_PORT=5432

Run the Taiga

docker-compose up -d taiga

Now you can access Taiga with your favorite Web Browser. Default user admin with password 123123 will be created on the first run. Please do not forget to change the password.

I recommend to run nginx reverse proxy in front of this container, so that you could use TLS. Let's Encrypt project is now able to issue free SSL/TLS certificates.

Maintenance

Keeping your image up2dated

This is simple, just run the following commands which will ensure that you are running the latest images

docker-compose pull
docker-compose up -d

Accessing the Taiga Database

You can access it using the docker compose or docker as follows

docker-compose run --rm postgres sh -c 'PGPASSWORD=$TAIGA_DB_PASSWORD exec psql -h "$TAIGA_DB_HOST" -U $TAIGA_DB_USER'

docker run -ti --rm --net taiga_backend --env-file taiga-db.env postgres sh -c 'PGPASSWORD=$TAIGA_DB_PASSWORD exec psql -h "$TAIGA_DB_HOST" -U $TAIGA_DB_USER'

Backup the database

Below is an example of how you can make the Taiga PostgreSQL database backup

docker-compose run --rm postgres sh -c 'PGPASSWORD=$TAIGA_DB_PASSWORD exec pg_dump -h "$TAIGA_DB_HOST" -U $TAIGA_DB_USER $TAIGA_DB_NAME' > taiga-db.backup

To restore it

docker-compose run --rm postgres sh -c 'PGPASSWORD=$TAIGA_DB_PASSWORD exec psql -h "$TAIGA_DB_HOST" -U $TAIGA_DB_USER $TAIGA_DB_NAME' < taiga-db.backup

There are also volumes containing the data you might want to backup externally

$ docker volume ls
DRIVER              VOLUME NAME
local               taiga_taiga_media
local               taiga_taiga_static
local               taiga_postgres_data

Quick launch

For the impatient ones:

docker network create test1
docker run --rm -ti --network test1 --name postgres postgres:10-alpine
docker volume rm taiga_media
docker volume rm taiga_static
docker run --rm -ti --network test1 --name taiga -e SITE_URI=http://taiga -e TAIGA_DB_USER=taiga -e TAIGA_DB_NAME=taiga -e TAIGA_DB_PASSWORD=passw0rd -v taiga_static:/opt/taiga/static -v taiga_media:/opt/taiga/media andrey01/taiga

If you are running browser in a Docker container:

docker network connect test1 chrome_chrome_1

Open http://taiga and test Taiga.

Tearing down:

docker volume rm taiga_media
docker volume rm taiga_static
docker network disconnect test1 chrome_chrome_1
docker network rm test1