Skip to content

Taiga

Taiga: The free and open-source project management tool

For cross-functional agile teams to work effectively

A featured-rich software that offers a very simple start through its intuitive user interface.

Docker

#!/bin/bash

docker run --name taiga-postgres -d \
    -e POSTGRES_PASSWORD=postgres \
    -e POSTGRES_DB=postgres \
    -e POSTGRES_USER=postgres \
    -e POSTGRES_PASSWORD=postgres \
    postgres

docker run --name taiga-redis -d redis:3
docker run --name taiga-rabbit -d --hostname taiga rabbitmq:3
docker run --name taiga-celery -d --link taiga-rabbit:rabbit celery
docker run --name taiga-events -d --link taiga-rabbit:rabbit benhutchins/taiga-events

docker run -itd \
  --name taiga \
  --link taiga-postgres:postgres \
  --link taiga-redis:redis \
  --link taiga-rabbit:rabbit \
  --link taiga-events:events \
  -p 10003:80 \
  -e TAIGA_HOSTNAME=localhost \
  -e TAIGA_DB_HOST=postgres \
  -e TAIGA_DB_NAME=postgres \
  -e TAIGA_DB_USER=postgres \
  -e TAIGA_DB_PASSWORD=postgres \
  -v /home/your/Downloads/media:/usr/src/taiga-back/media \
  benhutchins/taiga

일단 위와 같이 실행해봤지만 정상적으로 작동하지 않는다. (2018-08-18 기준)

Compose

version: '3.3'

services:
  db:
    image: postgres
    deploy:
      replicas: 1
      restart_policy:
        condition: any
    networks:
      - net
    secrets:
      - taiga-taigauser-pw
    environment:
      - "POSTGRES_DB=taigadb"
      - "POSTGRES_USER=taigauser"
      - "POSTGRES_PASSWORD=test"
      - "POSTGRES_PASSWORD_FILE=/run/secrets/taiga-taigauser-pw"
    volumes:
      - raw_db:/var/lib/postgresql/data

  web:
    image: benhutchins/taiga
    depends_on:
      - db
    deploy:
      replicas: 1
      restart_policy:
        condition: any
      labels:
        - "traefik.enable=true"
        - "traefik.port=80"
        - "traefik.docker.network=traefik-net"
        - "traefik.frontend.rule=Host:${FRONTEND_HOST:?err}"
    ports:
      - 10002:80
    networks:
      - traefik-net
      - net
    secrets:
      - taiga-taigauser-pw
    volumes:
      - media:/usr/src/taiga-back/media
      - /opt/taiga/taiga-checkdb.py:/checkdb.py
    environment:
      - "TAIGA_SKIP_DB_CHECK=true"
      - "TAIGA_HOSTNAME=${FRONTEND_HOST:?err}"
      - "TAIGA_DB_HOST=${TAIGA_DB_HOST:?err}"
      - "TAIGA_DB_NAME=taigadb"
      - "TAIGA_DB_USER=taigauser"
      - "TAIGA_DB_PASSWORD=test"
      - "TAIGA_DB_PASSWORD_FILE=/run/secrets/taiga-taigauser-pw"

volumes:
  media:
  raw_db:

secrets:
  taiga-taigauser-pw:
    external: true

networks:
  net:
    driver: overlay
  traefik-net:
    external: true

Secret을 적용하기 위해 아래와 같이 checkdb.py코드를 수정한다.

import os, sys, psycopg2

DB_NAME = os.getenv('TAIGA_DB_NAME')
DB_HOST = os.getenv('TAIGA_DB_HOST')
DB_USER = os.getenv('TAIGA_DB_USER')
DB_PASS = open(os.getenv('TAIGA_DB_PASSWORD_FILE'), 'r').read()

conn_string = (
    "dbname='" + DB_NAME +
    "' user='" + DB_USER +
    "' host='" + DB_HOST +
    "' password='" + DB_PASS + "'")
print("Connecting to database:\n" + conn_string)
conn = psycopg2.connect(conn_string)
cur = conn.cursor()

cur.execute("select * from information_schema.tables where table_name=%s", ('django_migrations',))
exists = bool(cur.rowcount)

if exists is False:
    print("Database does not appear to be setup.")
    sys.exit(2)

이후 다음과 같이 Bash로 설치한다.

#!/usr/bin/env bash

if [[ $(id -u) -ne 0 ]]; then
    echo 'Please run as root.'
    exit 1
fi

FRONTEND_HOST=$1
if [[ -z $FRONTEND_HOST ]]; then
    echo "Usage: $0 {frontend_host}"
    exit 1
fi

export FRONTEND_HOST
echo "Frontend Host: $FRONTEND_HOST"

SECRET_NAME=taiga-taigauser-pw
SECRET_EXISTS=`docker secret ls | grep $SECRET_NAME`
if [[ -z $SECRET_EXISTS ]]; then
    read -sp "Enter the docker-secret ($SECRET_NAME) password: " SECRET_VALUE
    echo -e "\nCreate $SECRET_NAME secret"
    echo "$SECRET_VALUE" | docker secret create "$SECRET_NAME" -
else
    echo "Exists $SECRET_NAME"
fi

OPT_DIR=/opt/taiga
if [[ -d "$OPT_DIR" ]]; then
    echo "Exists $OPT_DIR directory"
else
    echo "Create $OPT_DIR directory"
    mkdir -p "$OPT_DIR"
fi

CHECKDB_TEMPLATE=taiga-checkdb.py
CHECKDB_SCRIPT_PATH=$OPT_DIR/taiga-checkdb.py
if [[ -f "$CHECKDB_SCRIPT_PATH" ]]; then
    echo "Exists $CHECKDB_SCRIPT_PATH file"
else
    echo "Create $CHECKDB_SCRIPT_PATH file"
    cp "$CHECKDB_TEMPLATE" "$CHECKDB_SCRIPT_PATH"
fi

COMPOSE_YML=taiga-compose.yml
if [[ ! -f "$COMPOSE_YML" ]]; then
    echo "Not found $COMPOSE_YML file"
    exit 1
fi

STACK_NAME=taiga
export TAIGA_DB_HOST="${STACK_NAME}_db"
echo "Deploy stack: $STACK_NAME"
docker stack deploy -c "$COMPOSE_YML" "$STACK_NAME"

echo "Go to page $FRONTEND_HOST and continue setting."
echo "Done ($?)."

참고로 위의 코드도 2018-08-18 기준으로 정상적으로 작동하지 않는다.

See also

Favorite site