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 기준으로 정상적으로 작동하지 않는다.