-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
plane: add gitignore, setup script & docker compose file
Signed-off-by: Kago Kagichiri <[email protected]> Signed-off-by: Kago Kagichiri <[email protected]>
- Loading branch information
Showing
3 changed files
with
288 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
*.env |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,163 @@ | ||
version: "3.8" | ||
|
||
x-app-env : &app-env | ||
environment: | ||
- NGINX_PORT=${NGINX_PORT:-80} | ||
- WEB_URL=${WEB_URL:-http://localhost} | ||
- DEBUG=${DEBUG:-0} | ||
- DJANGO_SETTINGS_MODULE=${DJANGO_SETTINGS_MODULE:-plane.settings.production} # deprecated | ||
- NEXT_PUBLIC_DEPLOY_URL=${NEXT_PUBLIC_DEPLOY_URL:-http://localhost/spaces} # deprecated | ||
- SENTRY_DSN=${SENTRY_DSN:-""} | ||
- SENTRY_ENVIRONMENT=${SENTRY_ENVIRONMENT:-"production"} | ||
- GOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID:-""} | ||
- GITHUB_CLIENT_ID=${GITHUB_CLIENT_ID:-""} | ||
- GITHUB_CLIENT_SECRET=${GITHUB_CLIENT_SECRET:-""} | ||
- DOCKERIZED=${DOCKERIZED:-1} # deprecated | ||
- CORS_ALLOWED_ORIGINS=${CORS_ALLOWED_ORIGINS:-""} | ||
# Gunicorn Workers | ||
- GUNICORN_WORKERS=${GUNICORN_WORKERS:-2} | ||
#DB SETTINGS | ||
- PGHOST=${PGHOST:-plane-db} | ||
- PGDATABASE=${PGDATABASE:-plane} | ||
- POSTGRES_USER=${POSTGRES_USER:-plane} | ||
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-plane} | ||
- POSTGRES_DB=${POSTGRES_DB:-plane} | ||
- PGDATA=${PGDATA:-/var/lib/postgresql/data} | ||
- DATABASE_URL=${DATABASE_URL:-postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${PGHOST}/${PGDATABASE}} | ||
# REDIS SETTINGS | ||
- REDIS_HOST=${REDIS_HOST:-plane-redis} | ||
- REDIS_PORT=${REDIS_PORT:-6379} | ||
- REDIS_URL=${REDIS_URL:-redis://${REDIS_HOST}:6379/} | ||
# EMAIL SETTINGS - Deprecated can be configured through admin panel | ||
- EMAIL_HOST=${EMAIL_HOST:-""} | ||
- EMAIL_HOST_USER=${EMAIL_HOST_USER:-""} | ||
- EMAIL_HOST_PASSWORD=${EMAIL_HOST_PASSWORD:-""} | ||
- EMAIL_PORT=${EMAIL_PORT:-587} | ||
- EMAIL_FROM=${EMAIL_FROM:-"Team Plane <[email protected]>"} | ||
- EMAIL_USE_TLS=${EMAIL_USE_TLS:-1} | ||
- EMAIL_USE_SSL=${EMAIL_USE_SSL:-0} | ||
- DEFAULT_EMAIL=${DEFAULT_EMAIL:[email protected]} | ||
- DEFAULT_PASSWORD=${DEFAULT_PASSWORD:-password123} | ||
# OPENAI SETTINGS - Deprecated can be configured through admin panel | ||
- OPENAI_API_BASE=${OPENAI_API_BASE:-https://api.openai.com/v1} | ||
- OPENAI_API_KEY=${OPENAI_API_KEY:-""} | ||
- GPT_ENGINE=${GPT_ENGINE:-"gpt-3.5-turbo"} | ||
# LOGIN/SIGNUP SETTINGS - Deprecated can be configured through admin panel | ||
- ENABLE_SIGNUP=${ENABLE_SIGNUP:-1} | ||
- ENABLE_EMAIL_PASSWORD=${ENABLE_EMAIL_PASSWORD:-1} | ||
- ENABLE_MAGIC_LINK_LOGIN=${ENABLE_MAGIC_LINK_LOGIN:-0} | ||
# Application secret | ||
- SECRET_KEY=${SECRET_KEY:-60gp0byfz2dvffa45cxl20p1scy9xbpf6d8c5y0geejgkyp1b5} | ||
# DATA STORE SETTINGS | ||
- USE_MINIO=${USE_MINIO:-1} | ||
- AWS_REGION=${AWS_REGION:-""} | ||
- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:-"access-key"} | ||
- AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY:-"secret-key"} | ||
- AWS_S3_ENDPOINT_URL=${AWS_S3_ENDPOINT_URL:-http://plane-minio:9000} | ||
- AWS_S3_BUCKET_NAME=${AWS_S3_BUCKET_NAME:-uploads} | ||
- MINIO_ROOT_USER=${MINIO_ROOT_USER:-"access-key"} | ||
- MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD:-"secret-key"} | ||
- BUCKET_NAME=${BUCKET_NAME:-uploads} | ||
- FILE_SIZE_LIMIT=${FILE_SIZE_LIMIT:-5242880} | ||
|
||
|
||
|
||
services: | ||
web: | ||
<<: *app-env | ||
platform: linux/amd64 | ||
image: makeplane/plane-frontend:${APP_RELEASE:-latest} | ||
restart: unless-stopped | ||
command: /usr/local/bin/start.sh web/server.js web | ||
deploy: | ||
replicas: ${WEB_REPLICAS:-1} | ||
depends_on: | ||
- api | ||
- worker | ||
|
||
space: | ||
<<: *app-env | ||
platform: linux/amd64 | ||
image: makeplane/plane-space:${APP_RELEASE:-latest} | ||
restart: unless-stopped | ||
command: /usr/local/bin/start.sh space/server.js space | ||
deploy: | ||
replicas: ${SPACE_REPLICAS:-1} | ||
depends_on: | ||
- api | ||
- worker | ||
- web | ||
|
||
api: | ||
<<: *app-env | ||
platform: linux/amd64 | ||
image: makeplane/plane-backend:${APP_RELEASE:-latest} | ||
restart: unless-stopped | ||
command: ./bin/takeoff | ||
deploy: | ||
replicas: ${API_REPLICAS:-1} | ||
depends_on: | ||
- plane-db | ||
- plane-redis | ||
|
||
worker: | ||
<<: *app-env | ||
platform: linux/amd64 | ||
image: makeplane/plane-backend:${APP_RELEASE:-latest} | ||
restart: unless-stopped | ||
command: ./bin/worker | ||
depends_on: | ||
- api | ||
- plane-db | ||
- plane-redis | ||
|
||
beat-worker: | ||
<<: *app-env | ||
platform: linux/amd64 | ||
image: makeplane/plane-backend:${APP_RELEASE:-latest} | ||
restart: unless-stopped | ||
command: ./bin/beat | ||
depends_on: | ||
- api | ||
- plane-db | ||
- plane-redis | ||
|
||
plane-db: | ||
<<: *app-env | ||
image: postgres:15.2-alpine | ||
restart: unless-stopped | ||
command: postgres -c 'max_connections=1000' | ||
volumes: | ||
- pgdata:/var/lib/postgresql/data | ||
|
||
plane-redis: | ||
<<: *app-env | ||
image: redis:6.2.7-alpine | ||
restart: unless-stopped | ||
volumes: | ||
- redisdata:/data | ||
|
||
plane-minio: | ||
<<: *app-env | ||
image: minio/minio | ||
restart: unless-stopped | ||
command: server /export --console-address ":9090" | ||
volumes: | ||
- uploads:/export | ||
|
||
# Comment this if you already have a reverse proxy running | ||
proxy: | ||
<<: *app-env | ||
platform: linux/amd64 | ||
image: makeplane/plane-proxy:${APP_RELEASE:-latest} | ||
ports: | ||
- ${NGINX_PORT}:80 | ||
depends_on: | ||
- web | ||
- api | ||
- space | ||
|
||
volumes: | ||
pgdata: | ||
redisdata: | ||
uploads: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,124 @@ | ||
#!/bin/bash | ||
|
||
BRANCH=master | ||
SCRIPT_DIR=$PWD | ||
PLANE_INSTALL_DIR=$PWD/plane-app | ||
|
||
function install(){ | ||
echo | ||
echo "Installing on $PLANE_INSTALL_DIR" | ||
download | ||
} | ||
function download(){ | ||
cd $SCRIPT_DIR | ||
TS=$(date +%s) | ||
if [ -f "$PLANE_INSTALL_DIR/docker-compose.yaml" ] | ||
then | ||
mv $PLANE_INSTALL_DIR/docker-compose.yaml $PLANE_INSTALL_DIR/archive/$TS.docker-compose.yaml | ||
fi | ||
|
||
curl -H 'Cache-Control: no-cache, no-store' -s -o $PLANE_INSTALL_DIR/docker-compose.yaml https://raw.githubusercontent.com/makeplane/plane/$BRANCH/deploy/selfhost/docker-compose.yml?$(date +%s) | ||
curl -H 'Cache-Control: no-cache, no-store' -s -o $PLANE_INSTALL_DIR/variables-upgrade.env https://raw.githubusercontent.com/makeplane/plane/$BRANCH/deploy/selfhost/variables.env?$(date +%s) | ||
|
||
if [ -f "$PLANE_INSTALL_DIR/.env" ]; | ||
then | ||
cp $PLANE_INSTALL_DIR/.env $PLANE_INSTALL_DIR/archive/$TS.env | ||
else | ||
mv $PLANE_INSTALL_DIR/variables-upgrade.env $PLANE_INSTALL_DIR/.env | ||
fi | ||
|
||
if [ "$BRANCH" != "master" ]; | ||
then | ||
cp $PLANE_INSTALL_DIR/docker-compose.yaml $PLANE_INSTALL_DIR/temp.yaml | ||
sed -e 's@${APP_RELEASE:-latest}@'"$BRANCH"'@g' \ | ||
$PLANE_INSTALL_DIR/temp.yaml > $PLANE_INSTALL_DIR/docker-compose.yaml | ||
|
||
rm $PLANE_INSTALL_DIR/temp.yaml | ||
fi | ||
|
||
echo "" | ||
echo "Latest version is now available for you to use" | ||
echo "" | ||
echo "In case of Upgrade, your new setting file is available as 'variables-upgrade.env'. Please compare and set the required values in '.env 'file." | ||
echo "" | ||
|
||
} | ||
function startServices(){ | ||
cd $PLANE_INSTALL_DIR | ||
docker compose up -d | ||
cd $SCRIPT_DIR | ||
} | ||
function stopServices(){ | ||
cd $PLANE_INSTALL_DIR | ||
docker compose down | ||
cd $SCRIPT_DIR | ||
} | ||
function restartServices(){ | ||
cd $PLANE_INSTALL_DIR | ||
docker compose restart | ||
cd $SCRIPT_DIR | ||
} | ||
function upgrade(){ | ||
echo "***** STOPPING SERVICES ****" | ||
stopServices | ||
|
||
echo | ||
echo "***** DOWNLOADING LATEST VERSION ****" | ||
download | ||
|
||
echo "***** PLEASE VALIDATE AND START SERVICES ****" | ||
|
||
} | ||
function askForAction(){ | ||
echo | ||
echo "Select a Action you want to perform:" | ||
echo " 1) Install" | ||
echo " 2) Start" | ||
echo " 3) Stop" | ||
echo " 4) Restart" | ||
echo " 5) Upgrade" | ||
echo " 6) Exit" | ||
echo | ||
read -p "Action [2]: " ACTION | ||
until [[ -z "$ACTION" || "$ACTION" =~ ^[1-6]$ ]]; do | ||
echo "$ACTION: invalid selection." | ||
read -p "Action [2]: " ACTION | ||
done | ||
echo | ||
|
||
|
||
if [ "$ACTION" == "1" ] | ||
then | ||
install | ||
askForAction | ||
elif [ "$ACTION" == "2" ] || [ "$ACTION" == "" ] | ||
then | ||
startServices | ||
askForAction | ||
elif [ "$ACTION" == "3" ] | ||
then | ||
stopServices | ||
askForAction | ||
elif [ "$ACTION" == "4" ] | ||
then | ||
restartServices | ||
askForAction | ||
elif [ "$ACTION" == "5" ] | ||
then | ||
upgrade | ||
askForAction | ||
elif [ "$ACTION" == "6" ] | ||
then | ||
exit 0 | ||
else | ||
echo "INVALID ACTION SUPPLIED" | ||
fi | ||
} | ||
|
||
if [ "$BRANCH" != "master" ]; | ||
then | ||
PLANE_INSTALL_DIR=$PWD/plane-app-$(echo $BRANCH | sed -r 's@(\/|" "|\.)@-@g') | ||
fi | ||
mkdir -p $PLANE_INSTALL_DIR/archive | ||
|
||
askForAction |