Busabase
Busabase 是一个开源(MIT)数据库与 AI 智能体工作空间——将数据、文档、技能和应用集成于一体。您可以本地运行、在网络内自托管或使用 Busabase Cloud,从而开启新时代。
AI 翻译
Docker compose environment with Drupal/WissKI, Mariadb, RDF4J, Adminer and Solr.
翻译准备中
正在加载完整 README。
查看完整 README ↗Standalone WissKI stack with a PHP 8.5 FPM Drupal image, PostgreSQL 17, OpenGDB (RDF4J 6), Redis 8, Varnish 9, Caddy, and pgAdmin. Solr 10 and the WissKI Data Importer UI are optional.
This repository builds and publishes its own images. It does not depend on the SODA SCS stack.
| Image | When to use |
|---|---|
ghcr.io/rnsrk/dockerwisski-production | OPcache on (no timestamp checks), no Xdebug, Caddy → Varnish |
ghcr.io/rnsrk/dockerwisski-development | OPcache on with timestamp checks, Xdebug (trigger mode, 127.0.0.1:9003 inside the container), Caddy → Drupal |
After the first GitHub Actions publish, set the GHCR packages to public so pulls do not need a token.
git clone --recurse-submodules [email protected]:rnsrk/dockerWissKI.git
cd dockerWissKI
cp env/development.env .env # or: cp env/production.env .env
# Change all passwords and emails in .env
docker compose up -d
First boot installs Drupal and WissKI recipes; that can take several minutes. Follow with docker compose logs -f drupal.
Development (env/development.env) | Production (env/production.env) | |
|---|---|---|
| Image | dockerwisski-development | dockerwisski-production |
Public HTTP (HTTP_PORT, default 80) | Caddy → Drupal | Caddy → Varnish |
| Varnish | off | on (COMPOSE_PROFILES includes production) |
| Caddy subdomains | wisski.localhost, drupal.wisski.localhost, … | same; site upstream is Varnish |
| Xdebug | port 9003, trigger mode | not installed |
| Lint and test tools | phpcs, phpstan, drupal/core-dev, cspell/eslint/stylelint (baked in) | not included |
| PHPUnit services | chromedriver, static, test database wisski_test | not included |
| WissKI module | git clone on volume wisski-module | image codebase |
| Git SSH | openssh-client, user developer | not included |
| Page cache | off | 5 minutes |
| Drupal bypass | drupal.wisski.localhost | drupal.wisski.localhost (replaces 127.0.0.1:8082) |
pgAdmin is the Compose profile tools (enabled in both presets). Omit it by removing tools from COMPOSE_PROFILES. Solr is the profile solr (off by default); add solr to COMPOSE_PROFILES when Search API needs it.
Redis persistence is RDB only. Background saves need vm.overcommit_memory=1 on the host (Docker cannot set this inside the container): sudo sysctl -w vm.overcommit_memory=1.
Drupal concurrency is set in .env (recreate the container after changing):
| Variable | Default (dev / prod) | What it sizes |
|---|---|---|
DRUPAL_CPUS | 6.0 / 2.0 | Drupal cgroup CPU |
DRUPAL_MEMORY | 4G / 2G | Drupal cgroup RAM |
NGINX_WORKER_PROCESSES | 4 / 2 | Nginx workers (auto uses host nproc) |
PHP_FPM_MAX_CHILDREN | 8 / 6 | Concurrent PHP requests |
RDF4J_CPUS | 6.0 / 2.0 | RDF4J (SPARQL) cgroup CPU |
RDF4J_MEMORY | 3G / 1536M | RDF4J cgroup RAM |
RDF4J_HEAP_MAX | 2g / 1g | JVM heap (-Xmx; keep ~1G below RDF4J_MEMORY) |
POSTGRES_CPUS | 4.0 / 2.0 | PostgreSQL cgroup CPU |
POSTGRES_MEMORY | 2G / 2G | PostgreSQL cgroup RAM |
IEF subentity forms and SALZ adapters spend most of their time in SPARQL, not Drupal SQL. Raising DRUPAL_CPUS without RDF4J_CPUS / RDF4J_HEAP_MAX does not speed those up. Raising nginx workers without DRUPAL_CPUS / PHP_FPM_MAX_CHILDREN does not speed Drupal up. SPARQL can approach 1G per PHP child, so keep PHP_FPM_MAX_CHILDREN in line with DRUPAL_MEMORY. Recreate the service after changing these (docker compose up -d).
Development enables OPcache with timestamp checks so bind-mounted WissKI still live-reloads. Xdebug stays in trigger mode; set XDEBUG_MODE=off in .env (and recreate Drupal) if you are not debugging — the extension still costs CPU while mode=debug.
Apple Silicon: append docker-compose.apple-silicon.yml to COMPOSE_FILE in .env. Local Drupal image build: append docker-compose.local-build.yml. WissKI Data Importer UI: append docker-compose.importer.yml (before docker-compose.proxy.yml) and git submodule update --init wisski_data_importer. Machine-local tweaks: copy docker-compose.override.yml.example to docker-compose.override.yml (gitignored) and append that file last.
The Drupal installer creates settings.php and the entrypoint leaves it alone, apart from one include line at the end. On every start the entrypoint writes web/sites/default/settings.docker.php from the environment and settings.php includes it last, so it wins over anything set earlier:
| Setting | Comes from |
|---|---|
trusted_host_patterns | DRUPAL_TRUSTED_HOSTS, patterns separated by | |
file_private_path | DRUPAL_PRIVATE_FILES_DIR |
| Redis cache backend | drupal/config/redis/redis.settings.php |
| Reverse proxy | DRUPAL_PROXY_ADDRESSES: none (default, also unset, off, false, 0), auto (the container's Docker networks, which Caddy and Varnish share), or CIDRs separated by | |
To change one of these, edit .env and recreate the container (docker compose up -d). A value set by hand in settings.php is overridden. Put anything else into settings.local.php.
docker compose exec -u developer drupal bash
Omit -u developer to run as root. PHP-FPM stays www-data.
以上为 README 的开头部分。其余内容请阅读原文。 查看完整 README ↗