From dae165b87a77d94369be0a4e4242472b2527f657 Mon Sep 17 00:00:00 2001 From: addshore Date: Wed, 30 Sep 2026 20:38:44 +0100 Subject: [PATCH] dc: Support local and Alpha-backed Cradle Compose setups Keep the existing addshore-alpha setup available through a separate Compose file and make the local MediaWiki setup the default. Document how to run and switch between them, mount source and Composer-generated files for live edits, and allow development URL overrides without changing production defaults. I'm not sure this is the optimum development setup for cradle (in the cloud context), I feel that a single docker-compose file perhaps in the `api` repo migth benefit the team, however I also expect this is better than only being able to point to the old addshore-alpha site. This was created while working on the following change locally https://github.com/wbstack/cradle/pull/148 --- README.md | 31 +++++++++++++++++++++++++++ docker-compose.alpha.yml | 18 ++++++++++++++++ docker-compose.yml | 14 +++++++++--- docker/config-docker-compose-alpha.js | 15 +++++++++++++ docker/config-docker-compose.js | 20 +++++++++-------- public_html/api.php | 15 +++++++++++++ 6 files changed, 101 insertions(+), 12 deletions(-) create mode 100644 docker-compose.alpha.yml create mode 100644 docker/config-docker-compose-alpha.js diff --git a/README.md b/README.md index afda9aa..6d56228 100644 --- a/README.md +++ b/README.md @@ -52,3 +52,34 @@ Install the required PHP via composer: ```sh composer install ``` + +### Docker Compose development + +The existing Alpha-backed setup uses addshore-alpha: + +```sh +docker compose -f docker-compose.alpha.yml up -d +``` + +Open Cradle at . + +To test against a local MediaWiki instead, start its stack from its checkout: + +```sh +docker compose -p cradle-shex-mw up -d +``` + +Then start Cradle from this checkout: + +```sh +docker compose up -d +``` + +Cradle uses the local wiki at . If that host does +not resolve, add `127.0.0.1 site1.localhost` to your hosts file. This MediaWiki +stack uses a fake API; OAuth-backed writes are not configured. + +Cradle's source files, Composer dependencies, and generated frontend resources +are mounted from this checkout, so edits are available without rebuilding the +image. Run `composer install` first to populate dependencies and generated +resources. diff --git a/docker-compose.alpha.yml b/docker-compose.alpha.yml new file mode 100644 index 0000000..25027d3 --- /dev/null +++ b/docker-compose.alpha.yml @@ -0,0 +1,18 @@ +version: '3.3' +services: + cradle: + build: . + volumes: + - ./public_html/api.php:/var/www/html/cradle/public_html/api.php:ro + - ./public_html/config.js.template:/var/www/html/cradle/public_html/config.js.template:ro + - ./public_html/index.html:/var/www/html/cradle/public_html/index.html:ro + - ./public_html/vue.js:/var/www/html/cradle/public_html/vue.js:ro + - ./public_html/vue_components:/var/www/html/cradle/public_html/vue_components:ro + - ./public_html/resources:/var/www/html/cradle/public_html/resources:ro + - ./vendor:/var/www/html/cradle/vendor:ro + - ./docker/config-docker-compose-alpha.js:/var/www/html/cradle/public_html/config.js:ro + ports: + - 8087:80 + environment: + CRADLE_WIKIBASE_BASE_URL: https://addshore-alpha.wiki.opencura.com + CRADLE_BASE_URL: http://localhost:8087 diff --git a/docker-compose.yml b/docker-compose.yml index 2905c06..5f61998 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,8 +3,16 @@ services: cradle: build: . volumes: - - ./docker/config-docker-compose.js:/var/www/html/cradle/public_html/config.js - - ./public_html:/var/www/html/cradle/public_html - - ./vendor:/var/www/html/cradle/vendor + - ./public_html/api.php:/var/www/html/cradle/public_html/api.php:ro + - ./public_html/config.js.template:/var/www/html/cradle/public_html/config.js.template:ro + - ./public_html/index.html:/var/www/html/cradle/public_html/index.html:ro + - ./public_html/vue.js:/var/www/html/cradle/public_html/vue.js:ro + - ./public_html/vue_components:/var/www/html/cradle/public_html/vue_components:ro + - ./public_html/resources:/var/www/html/cradle/public_html/resources:ro + - ./vendor:/var/www/html/cradle/vendor:ro + - ./docker/config-docker-compose.js:/var/www/html/cradle/public_html/config.js:ro ports: - 8087:80 + environment: + CRADLE_WIKIBASE_BASE_URL: http://site1.localhost:8001 + CRADLE_BASE_URL: http://localhost:8087 diff --git a/docker/config-docker-compose-alpha.js b/docker/config-docker-compose-alpha.js new file mode 100644 index 0000000..3d28d9d --- /dev/null +++ b/docker/config-docker-compose-alpha.js @@ -0,0 +1,15 @@ +'use strict'; + +const wikibaseBaseUrl = 'https://addshore-alpha.wiki.opencura.com'; +const cradleBaseUrl = 'http://localhost:8087'; + +let config = { + "source_page": 'Project:Cradle', + "wikibase_url": `${wikibaseBaseUrl}/wiki/`, + "api": `${wikibaseBaseUrl}/w/api.php`, + "wikibase_api": `${wikibaseBaseUrl}/w/api.php`, + "oauth_url": `${wikibaseBaseUrl}/w/index.php?title=Special:OAuth`, + "cradle_url": `${cradleBaseUrl}/`, + "cradle_api": `${cradleBaseUrl}/api.php`, + "vue_components_base_url": `${cradleBaseUrl}/resources/vue/` +} ; diff --git a/docker/config-docker-compose.js b/docker/config-docker-compose.js index 0a04e99..c966eb6 100644 --- a/docker/config-docker-compose.js +++ b/docker/config-docker-compose.js @@ -1,13 +1,15 @@ 'use strict'; -// Hardcoded addshore-alpha API for development.. +const wikibaseBaseUrl = 'http://site1.localhost:8001'; +const cradleBaseUrl = 'http://localhost:8087'; + let config = { - "source_page":'Project:Cradle', - "wikibase_url":'https://addshore-alpha.wiki.opencura.com/wiki/', - "api":'https://addshore-alpha.wiki.opencura.com/w/api.php', - "wikibase_api":'https://addshore-alpha.wiki.opencura.com/w/api.php', - "oauth_url":'https://addshore-alpha.wiki.opencura.com/w/index.php?title=Special:OAuth', - "cradle_url":'http://localhost:8087/cradle/', - "cradle_api":'http://localhost:8087/api.php', - "vue_components_base_url": 'http://localhost:8087/resources/vue/' + "source_page": 'Project:Cradle', + "wikibase_url": `${wikibaseBaseUrl}/wiki/`, + "api": `${wikibaseBaseUrl}/w/api.php`, + "wikibase_api": `${wikibaseBaseUrl}/w/api.php`, + "oauth_url": `${wikibaseBaseUrl}/w/index.php?title=Special:OAuth`, + "cradle_url": `${cradleBaseUrl}/`, + "cradle_api": `${cradleBaseUrl}/api.php`, + "vue_components_base_url": `${cradleBaseUrl}/resources/vue/` } ; diff --git a/public_html/api.php b/public_html/api.php index 30cc746..a60463b 100644 --- a/public_html/api.php +++ b/public_html/api.php @@ -23,6 +23,21 @@ function get_config() { 'cradle_api' => "https://${s}/tools/cradle/api.php", 'vue_components_base_url' => "https://${s}/tools/cradle/resources/vue/", ]; + $wikibaseBaseUrl = getenv('CRADLE_WIKIBASE_BASE_URL'); + if ( $wikibaseBaseUrl !== false && $wikibaseBaseUrl !== '' ) { + $wikibaseBaseUrl = rtrim( $wikibaseBaseUrl, '/' ); + $j['wikibase_url'] = "${wikibaseBaseUrl}/wiki/"; + $j['api'] = "${wikibaseBaseUrl}/w/api.php"; + $j['wikibase_api'] = "${wikibaseBaseUrl}/w/api.php"; + $j['oauth_url'] = "${wikibaseBaseUrl}/w/index.php?title=Special:OAuth"; + } + $cradleBaseUrl = getenv('CRADLE_BASE_URL'); + if ( $cradleBaseUrl !== false && $cradleBaseUrl !== '' ) { + $cradleBaseUrl = rtrim( $cradleBaseUrl, '/' ); + $j['cradle_url'] = "${cradleBaseUrl}/"; + $j['cradle_api'] = "${cradleBaseUrl}/api.php"; + $j['vue_components_base_url'] = "${cradleBaseUrl}/resources/vue/"; + } $j = json_decode( json_encode( $j ) );// Convert to object return $j ; }