Solidtime - Docker compose

Rychlý návod pro instalaci SolidTime pomocí Dockeru

Share
Solidtime - Docker compose

Rychlý návod pro instalaci Solidtime jako docker kontejner. Solidtime je moderní time tracker. Nabízí sledování času, práce na projektech, peníze, reporty,...

Web: https://www.solidtime.io/
Kompletní návod: https://docs.solidtime.io/self-hosting/guides/docker

1) Konfigurační soubory

APP_NAME="solidtime"
VITE_APP_NAME="solidtime"
APP_ENV="production"
APP_DEBUG="false"
APP_URL="https://yourDomain"
APP_FORCE_HTTPS="true"
APP_ENABLE_REGISTRATION="true"
TRUSTED_PROXIES="0.0.0.0/0,2000:0:0:0:0:0:0:0/3"

# Authentication
APP_KEY="GeneratedPrivateKey"
PASSPORT_PUBLIC_KEY="GeneratedPublicKey"
SUPER_ADMINS="yourEmail"

# Logging
LOG_CHANNEL="stderr_daily"
LOG_LEVEL="debug"

# Database
DB_CONNECTION="pgsql"
DB_HOST="database"
DB_PORT="5432"
DB_SSLMODE="require"
DB_DATABASE="solidtime"
DB_USERNAME="dbUsername"
DB_PASSWORD="dbPassword"

# Mail
MAIL_MAILER="smtp"
MAIL_HOST="smtp.yourprovider.com"
MAIL_PORT="587"
MAIL_ENCRYPTION="tls"
MAIL_FROM_ADDRESS="noreply@myemail.com"
MAIL_FROM_NAME="emailName"
MAIL_USERNAME="emailUsername"
MAIL_PASSWORD="emailPassword"

# Queue
QUEUE_CONNECTION="database"

# File storage
FILESYSTEM_DISK="local"
PUBLIC_FILESYSTEM_DISK="public"

# Services
GOTENBERG_URL="http://gotenberg:3000"

laravel.env

APP_DOMAIN=yourdomain.com
DB_DATABASE=solidtimedb
DB_USERNAME=dbUser
FORWARD_APP_PORT=8000
FORWARD_DB_PORT=5432
DB_PASSWORD=sbPassword
SOLIDTIME_IMAGE_TAG=latest

.env

services:
  solidtime:
    restart: always
    networks:
      - proxy-network
    image: "solidtime/solidtime:${SOLIDTIME_IMAGE_TAG:-latest}"
    user: "1000:1000"
    expose:
      - "8000"
    volumes:
      - "app-storage:/var/www/html/storage"
      - "./logs:/var/www/html/storage/logs"
      - "./app-storage:/var/www/html/storage/app"
    environment:
      CONTAINER_MODE: http
    healthcheck:
      test: [ "CMD", "curl", "--fail", "http://localhost:8000/health-check/up" ]
    env_file:
      - laravel.env
    depends_on:
      - database

  scheduler:
    restart: always
    networks:
      - shared-network
    image: "solidtime/solidtime:${SOLIDTIME_IMAGE_TAG:-latest}"
    user: "1000:1000"
    volumes:
      - "app-storage:/var/www/html/storage"
      - "./logs:/var/www/html/storage/logs"
      - "./app-storage:/var/www/html/storage/app"
    environment:
      CONTAINER_MODE: scheduler
    healthcheck:
      test: [ "CMD", "healthcheck" ]
    env_file:
      - laravel.env
    depends_on:
      - database

  queue:
    restart: always
    networks:
      - proxy-network
    image: "solidtime/solidtime:${SOLIDTIME_IMAGE_TAG:-latest}"
    user: "1000:1000"
    volumes:
      - "app-storage:/var/www/html/storage"
      - "./logs:/var/www/html/storage/logs"
      - "./app-storage:/var/www/html/storage/app"
    environment:
      CONTAINER_MODE: worker
      WORKER_COMMAND: "php /var/www/html/artisan queue:work"
    healthcheck:
      test: [ "CMD", "healthcheck" ]
    env_file:
      - laravel.env
    depends_on:
      - database

  database:
    restart: always
    networks:
       - shared-network
    image: 'postgres:15'
    environment:
      PGPASSWORD: '${DB_PASSWORD:-secret}'
      POSTGRES_DB: '${DB_DATABASE}'
      POSTGRES_USER: '${DB_USERNAME}'
      POSTGRES_PASSWORD: '${DB_PASSWORD:-secret}'
    volumes:
      - 'database-storage:/var/lib/postgresql/data'
    healthcheck:
      test:
        - CMD
        - pg_isready
        - '-q'
        - '-d'
        - '${DB_DATABASE}'
        - '-U'
        - '${DB_USERNAME}'
      retries: 3
      timeout: 5s

  gotenberg:
    image: gotenberg/gotenberg:8
    networks:
      - proxy-network
    healthcheck:
      test: [ "CMD", "curl", "--silent", "--fail", "http://localhost:3000/health" ]

networks:
  proxy-network:
    external: true

volumes:
  database-storage:
  app-storage:

docker-compose.yaml

2) Vytvoření dat

Po připojení dovnitř kontejneru je třeba pustit migrace:

php artisan migrate

Pak vygenerovat klíč do konfiguračních souborů:

php artisan self-host:generate-keys

Prvního uživatele lze vytvořit takto:

php artidan admin:user:create "jmeno prijmeni" "email" --verify-email --ask-for-password

3) Práva na složky

Pokud máte problém s přístupem do složek pro kontejner, zkuste je přidat do admin skupiny:

sudo chmod +R 1000:1000 app_storage logs