Busabase
Busabase는 AI 에이전트를 위한 오픈소스(MIT) 데이터베이스 및 작업 공간입니다
WissKI는 가상 연구 환경이자 Drupal 기반 연구 데이터 관리 도구로, GLAM 기관 및 연구 프로젝트에 특화되었습니다
WissKI is a virtual research environment and part of Drupal and A research data management tool especially for GLAM institutions and research projects.
데이터Shell · DockerfileGitHub @rnsrk온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
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 전문 보기 ↗