Compare commits
2 Commits
3bd4419866
...
b6499fd9b4
| Author | SHA1 | Date | |
|---|---|---|---|
| b6499fd9b4 | |||
| aed00c7825 |
26
Dockerfile
Normal file
26
Dockerfile
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
FROM node:22-bookworm-slim
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
ENV NEXT_TELEMETRY_DISABLED=1
|
||||||
|
|
||||||
|
# Build-time NEXT_PUBLIC vars so client bundles can be configured during image build.
|
||||||
|
ARG NEXT_PUBLIC_SUPABASE_URL
|
||||||
|
ARG NEXT_PUBLIC_SUPABASE_ANON_KEY
|
||||||
|
ARG NEXT_PUBLIC_APP_URL
|
||||||
|
|
||||||
|
ENV NEXT_PUBLIC_SUPABASE_URL=$NEXT_PUBLIC_SUPABASE_URL \
|
||||||
|
NEXT_PUBLIC_SUPABASE_ANON_KEY=$NEXT_PUBLIC_SUPABASE_ANON_KEY \
|
||||||
|
NEXT_PUBLIC_APP_URL=$NEXT_PUBLIC_APP_URL
|
||||||
|
|
||||||
|
COPY package*.json ./
|
||||||
|
RUN npm ci
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
RUN npm run build && npm prune --omit=dev
|
||||||
|
|
||||||
|
RUN mkdir -p /app/data
|
||||||
|
|
||||||
|
EXPOSE 8300
|
||||||
|
|
||||||
|
CMD ["npm", "run", "start", "--", "-H", "0.0.0.0", "-p", "8300"]
|
||||||
43
docker-compose.yml
Normal file
43
docker-compose.yml
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
services:
|
||||||
|
gantt-board:
|
||||||
|
image: gantt-board:latest
|
||||||
|
pull_policy: build
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
args:
|
||||||
|
NEXT_PUBLIC_SUPABASE_URL: ${NEXT_PUBLIC_SUPABASE_URL:-}
|
||||||
|
NEXT_PUBLIC_SUPABASE_ANON_KEY: ${NEXT_PUBLIC_SUPABASE_ANON_KEY:-}
|
||||||
|
NEXT_PUBLIC_APP_URL: ${NEXT_PUBLIC_APP_URL:-}
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "${APP_PORT:-8300}:8300"
|
||||||
|
environment:
|
||||||
|
NODE_ENV: production
|
||||||
|
NEXT_TELEMETRY_DISABLED: "1"
|
||||||
|
NEXT_PUBLIC_SUPABASE_URL: ${NEXT_PUBLIC_SUPABASE_URL:-}
|
||||||
|
NEXT_PUBLIC_SUPABASE_ANON_KEY: ${NEXT_PUBLIC_SUPABASE_ANON_KEY:-}
|
||||||
|
SUPABASE_SERVICE_ROLE_KEY: ${SUPABASE_SERVICE_ROLE_KEY:-}
|
||||||
|
SUPABASE_URL: ${SUPABASE_URL:-}
|
||||||
|
SUPABASE_ANON_KEY: ${SUPABASE_ANON_KEY:-}
|
||||||
|
SUPABASE_SECRET_KEY: ${SUPABASE_SECRET_KEY:-}
|
||||||
|
NEXT_PUBLIC_APP_URL: ${NEXT_PUBLIC_APP_URL:-}
|
||||||
|
GANTT_MACHINE_TOKEN: ${GANTT_MACHINE_TOKEN:-}
|
||||||
|
GANTT_MACHINE_USER_ID: ${GANTT_MACHINE_USER_ID:-}
|
||||||
|
GANTT_MACHINE_USER_NAME: ${GANTT_MACHINE_USER_NAME:-}
|
||||||
|
GANTT_MACHINE_USER_EMAIL: ${GANTT_MACHINE_USER_EMAIL:-}
|
||||||
|
RESEND_API_KEY: ${RESEND_API_KEY:-}
|
||||||
|
RESEND_FROM_EMAIL: ${RESEND_FROM_EMAIL:-}
|
||||||
|
EMAIL_FROM: ${EMAIL_FROM:-}
|
||||||
|
VERCEL_URL: ${VERCEL_URL:-}
|
||||||
|
volumes:
|
||||||
|
- gantt_board_data:/app/data
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "node -e \"fetch('http://127.0.0.1:8300/login').then((r)=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))\""]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
start_period: 45s
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
gantt_board_data:
|
||||||
@ -8,12 +8,23 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|||||||
# shellcheck source=./lib/api_client.sh
|
# shellcheck source=./lib/api_client.sh
|
||||||
source "$SCRIPT_DIR/lib/api_client.sh"
|
source "$SCRIPT_DIR/lib/api_client.sh"
|
||||||
|
|
||||||
|
# Color support - disable with --no-color or NO_COLOR env var
|
||||||
|
NO_COLOR="${NO_COLOR:-}"
|
||||||
RED='\033[0;31m'
|
RED='\033[0;31m'
|
||||||
GREEN='\033[0;32m'
|
GREEN='\033[0;32m'
|
||||||
YELLOW='\033[1;33m'
|
YELLOW='\033[1;33m'
|
||||||
BLUE='\033[0;34m'
|
BLUE='\033[0;34m'
|
||||||
NC='\033[0m'
|
NC='\033[0m'
|
||||||
|
|
||||||
|
# Disable colors if requested
|
||||||
|
if [[ -n "$NO_COLOR" ]]; then
|
||||||
|
RED=''
|
||||||
|
GREEN=''
|
||||||
|
YELLOW=''
|
||||||
|
BLUE=''
|
||||||
|
NC=''
|
||||||
|
fi
|
||||||
|
|
||||||
log_info() { echo -e "${BLUE}i${NC} $1"; }
|
log_info() { echo -e "${BLUE}i${NC} $1"; }
|
||||||
log_success() { echo -e "${GREEN}ok${NC} $1"; }
|
log_success() { echo -e "${GREEN}ok${NC} $1"; }
|
||||||
log_warning() { echo -e "${YELLOW}warn${NC} $1"; }
|
log_warning() { echo -e "${YELLOW}warn${NC} $1"; }
|
||||||
@ -39,7 +50,10 @@ show_usage() {
|
|||||||
Task CLI for Gantt Board
|
Task CLI for Gantt Board
|
||||||
|
|
||||||
USAGE:
|
USAGE:
|
||||||
./task.sh [list|get|create|update|delete|current-sprint|bulk-create] [args...]
|
./task.sh [--no-color] [list|get|create|update|delete|current-sprint|bulk-create] [args...]
|
||||||
|
|
||||||
|
GLOBAL FLAGS:
|
||||||
|
--no-color Disable colored output (also respects NO_COLOR env var)
|
||||||
|
|
||||||
COMMANDS:
|
COMMANDS:
|
||||||
list [status] List tasks (supports filters)
|
list [status] List tasks (supports filters)
|
||||||
@ -577,6 +591,27 @@ bulk_create() {
|
|||||||
|
|
||||||
check_dependencies
|
check_dependencies
|
||||||
|
|
||||||
|
# Handle global flags before commands
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
case "${1:-}" in
|
||||||
|
--no-color)
|
||||||
|
RED=''
|
||||||
|
GREEN=''
|
||||||
|
YELLOW=''
|
||||||
|
BLUE=''
|
||||||
|
NC=''
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--)
|
||||||
|
shift
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
case "${1:-}" in
|
case "${1:-}" in
|
||||||
list)
|
list)
|
||||||
shift
|
shift
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user