I'm following instructions from MediaWiki-Docker/Extension/ContentTranslation. At docker-compose up -d step I'm getting this error.
~/Documents/mediawiki$ docker-compose up -d [+] Building 0.2s (4/5) => [mediawiki_cxserver internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 31B 0.0s => [mediawiki_eventlogging internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 2B 0.0s => [mediawiki_cxserver internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => CANCELED [mediawiki_cxserver internal] load metadata for docker.io/library/node:10-buster 0.0s failed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: failed to read dockerfile: open /var/lib/docker/tmp/buildkit-mount133945045/Dockerfile: no such file or directory
Full terminal output.
| 1 | ~/Documents$ git clone --depth=1 https://gerrit.wikimedia.org/r/mediawiki/core.git mediawiki |
|---|---|
| 2 | Cloning into 'mediawiki'... |
| 3 | remote: Counting objects: 8900, done |
| 4 | remote: Finding sources: 100% (8900/8900) |
| 5 | remote: Getting sizes: 100% (7331/7331) |
| 6 | remote: Compressing objects: 99% (82436/82437) |
| 7 | remote: Total 8900 (delta 2315), reused 4780 (delta 1568) |
| 8 | Receiving objects: 100% (8900/8900), 31.66 MiB | 2.18 MiB/s, done. |
| 9 | Resolving deltas: 100% (2315/2315), done. |
| 10 | Updating files: 100% (8264/8264), done. |
| 11 | |
| 12 | |
| 13 | |
| 14 | ~/Documents$ git clone "https://gerrit.wikimedia.org/r/mediawiki/services/cxserver" cxserver |
| 15 | Cloning into 'cxserver'... |
| 16 | remote: Total 5976 (delta 0), reused 5976 (delta 0) |
| 17 | Receiving objects: 100% (5976/5976), 81.69 MiB | 1014.00 KiB/s, done. |
| 18 | Resolving deltas: 100% (4396/4396), done. |
| 19 | |
| 20 | |
| 21 | |
| 22 | ~/Documents$ cd mediawiki |
| 23 | |
| 24 | |
| 25 | |
| 26 | ~/Documents/mediawiki$ git clone "https://gerrit.wikimedia.org/r/mediawiki/skins/Vector" skins/Vector |
| 27 | git clone "https://gerrit.wikimedia.org/r/mediawiki/extensions/Cite" extensions/Cite |
| 28 | git clone "https://gerrit.wikimedia.org/r/mediawiki/extensions/ContentTranslation" extensions/ContentTranslation |
| 29 | git clone "https://gerrit.wikimedia.org/r/mediawiki/extensions/UniversalLanguageSelector" extensions/UniversalLanguageSelector |
| 30 | git clone --recursive "https://gerrit.wikimedia.org/r/mediawiki/extensions/VisualEditor" extensions/VisualEditor |
| 31 | git clone "https://gerrit.wikimedia.org/r/mediawiki/extensions/BetaFeatures" extensions/BetaFeatures |
| 32 | git clone "https://gerrit.wikimedia.org/r/mediawiki/extensions/GlobalPreferences" extensions/GlobalPreferences |
| 33 | git clone "https://gerrit.wikimedia.org/r/mediawiki/extensions/MobileFrontend" extensions/MobileFrontend |
| 34 | git clone "https://gerrit.wikimedia.org/r/mediawiki/extensions/EventLogging" extensions/EventLogging |
| 35 | Cloning into 'skins/Vector'... |
| 36 | remote: Counting objects: 120, done |
| 37 | remote: Finding sources: 100% (115/115) |
| 38 | remote: Getting sizes: 100% (78/78) |
| 39 | remote: Compressing objects: 100% (1279008/1279008) |
| 40 | remote: Total 12965 (delta 33), reused 12905 (delta 20) |
| 41 | Receiving objects: 100% (12965/12965), 3.68 MiB | 1.49 MiB/s, done. |
| 42 | Resolving deltas: 100% (9739/9739), done. |
| 43 | Cloning into 'extensions/Cite'... |
| 44 | remote: Counting objects: 34, done |
| 45 | remote: Finding sources: 100% (29/29) |
| 46 | remote: Getting sizes: 100% (17/17) |
| 47 | remote: Compressing objects: 100% (305218/305218) |
| 48 | remote: Total 19311 (delta 8), reused 19298 (delta 7) |
| 49 | Receiving objects: 100% (19311/19311), 3.62 MiB | 806.00 KiB/s, done. |
| 50 | Resolving deltas: 100% (14936/14936), done. |
| 51 | Cloning into 'extensions/ContentTranslation'... |
| 52 | remote: Counting objects: 344, done |
| 53 | remote: Finding sources: 100% (344/344) |
| 54 | remote: Getting sizes: 100% (283/283) |
| 55 | remote: Compressing objects: 100% (2933086/2933086) |
| 56 | remote: Total 50109 (delta 52), reused 49892 (delta 41) |
| 57 | Receiving objects: 100% (50109/50109), 13.62 MiB | 1.94 MiB/s, done. |
| 58 | Resolving deltas: 100% (40538/40538), done. |
| 59 | Cloning into 'extensions/UniversalLanguageSelector'... |
| 60 | remote: Counting objects: 107, done |
| 61 | remote: Finding sources: 100% (50/50) |
| 62 | remote: Getting sizes: 100% (30/30) |
| 63 | remote: Compressing objects: 100% (692290/692290) |
| 64 | remote: Total 25314 (delta 17), reused 25289 (delta 9) |
| 65 | Receiving objects: 100% (25314/25314), 74.78 MiB | 2.37 MiB/s, done. |
| 66 | Resolving deltas: 100% (18895/18895), done. |
| 67 | Cloning into 'extensions/VisualEditor'... |
| 68 | remote: Counting objects: 184, done |
| 69 | remote: Finding sources: 100% (111/111) |
| 70 | remote: Getting sizes: 100% (71/71) |
| 71 | remote: Compressing objects: 100% (1198791/1198791) |
| 72 | remote: Total 143636 (delta 35), reused 143580 (delta 23) |
| 73 | Receiving objects: 100% (143636/143636), 26.65 MiB | 2.19 MiB/s, done. |
| 74 | Resolving deltas: 100% (114840/114840), done. |
| 75 | Submodule 'lib/ve' (https://gerrit.wikimedia.org/r/VisualEditor/VisualEditor.git) registered for path 'lib/ve' |
| 76 | Cloning into '/Users/z/Documents/mediawiki/extensions/VisualEditor/lib/ve'... |
| 77 | remote: Counting objects: 51, done |
| 78 | remote: Finding sources: 100% (15/15) |
| 79 | remote: Getting sizes: 100% (9/9) |
| 80 | remote: Compressing objects: 100% (279932/279932) |
| 81 | remote: Total 141584 (delta 4), reused 141576 (delta 3) |
| 82 | Receiving objects: 100% (141584/141584), 29.57 MiB | 1.59 MiB/s, done. |
| 83 | Resolving deltas: 100% (121535/121535), done. |
| 84 | Submodule path 'lib/ve': checked out '2226310506cef39b369f49162e1cf2e5794ca484' |
| 85 | Cloning into 'extensions/BetaFeatures'... |
| 86 | remote: Counting objects: 15, done |
| 87 | remote: Finding sources: 100% (15/15) |
| 88 | remote: Getting sizes: 100% (11/11) |
| 89 | remote: Compressing objects: 100% (198542/198542) |
| 90 | remote: Total 6610 (delta 2), reused 6600 (delta 1) |
| 91 | Receiving objects: 100% (6610/6610), 1.20 MiB | 1.17 MiB/s, done. |
| 92 | Resolving deltas: 100% (4859/4859), done. |
| 93 | Cloning into 'extensions/GlobalPreferences'... |
| 94 | remote: Counting objects: 11, done |
| 95 | remote: Finding sources: 100% (11/11) |
| 96 | remote: Getting sizes: 100% (9/9) |
| 97 | remote: Compressing objects: 100% (180117/180117) |
| 98 | remote: Total 3378 (delta 1), reused 3369 (delta 0) |
| 99 | Receiving objects: 100% (3378/3378), 816.98 KiB | 1.09 MiB/s, done. |
| 100 | Resolving deltas: 100% (2460/2460), done. |
| 101 | Cloning into 'extensions/MobileFrontend'... |
| 102 | remote: Counting objects: 281, done |
| 103 | remote: Finding sources: 100% (61/61) |
| 104 | remote: Getting sizes: 100% (41/41) |
| 105 | remote: Compressing objects: 100% (42091/42091) |
| 106 | remote: Total 120436 (delta 14), reused 120429 (delta 14) |
| 107 | Receiving objects: 100% (120436/120436), 31.29 MiB | 2.44 MiB/s, done. |
| 108 | Resolving deltas: 100% (97353/97353), done. |
| 109 | Cloning into 'extensions/EventLogging'... |
| 110 | remote: Counting objects: 9, done |
| 111 | remote: Finding sources: 100% (9/9) |
| 112 | remote: Getting sizes: 100% (7/7) |
| 113 | remote: Compressing objects: 100% (152283/152283) |
| 114 | remote: Total 6564 (delta 1), reused 6558 (delta 0) |
| 115 | Receiving objects: 100% (6564/6564), 1.42 MiB | 1.13 MiB/s, done. |
| 116 | Resolving deltas: 100% (4815/4815), done. |
| 117 | |
| 118 | |
| 119 | |
| 120 | ~/Documents/mediawiki$ echo "MW_DOCKER_UID=$(id -u)" >> .env |
| 121 | echo "MW_DOCKER_GID=$(id -g)" >> .env |
| 122 | |
| 123 | |
| 124 | |
| 125 | ~/Documents/mediawiki$ docker-compose up -d |
| 126 | [+] Building 0.3s (4/5) |
| 127 | => [mediawiki_cxserver internal] load build definition from Dockerfile 0.0s |
| 128 | => => transferring dockerfile: 105B 0.0s |
| 129 | => [mediawiki_eventlogging internal] load build definition from Dockerfile 0.0s |
| 130 | => => transferring dockerfile: 2B 0.0s |
| 131 | => [mediawiki_cxserver internal] load .dockerignore 0.0s |
| 132 | => => transferring context: 2B 0.0s |
| 133 | => CANCELED [mediawiki_cxserver internal] load metadata for docker.io/library/node:10-buster 0.0s |
| 134 | failed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: failed to read dockerfile: open /var/lib/docker/tmp/buildkit-mount687336434/Dockerfile: no such file or directory |
Environment.
| 1 | ~$ sw_vers |
|---|---|
| 2 | ProductName: Mac OS X |
| 3 | ProductVersion: 10.15.7 |
| 4 | BuildVersion: 19H1323 |
| 5 | |
| 6 | |
| 7 | |
| 8 | ~$ docker --version |
| 9 | Docker version 20.10.8, build 3967b7d |
| 10 | |
| 11 | |
| 12 | |
| 13 | ~$ docker-compose --version |
| 14 | Docker Compose version v2.0.0-rc.2 |
| 15 | |
| 16 | |
| 17 | |
| 18 | ~/Documents/cxserver$ cat config.yaml |
| 19 | # Number of worker processes to spawn. |
| 20 | # Set to 0 to run everything in a single process without clustering. |
| 21 | # Use ncpu to run as many workers as there are CPU units |
| 22 | num_workers: 0 |
| 23 | |
| 24 | # Log error messages and gracefully restart a worker if v8 reports that it |
| 25 | # uses more heap (note: not RSS) than this many megabytes. |
| 26 | worker_heap_limit_mb: 250 |
| 27 | |
| 28 | # Logger info |
| 29 | logging: |
| 30 | level: trace |
| 31 | streams: |
| 32 | - type: stdout # log to stdout |
| 33 | named_levels: true # emit log level name instead of index. e.g. INFO vs 30 |
| 34 | # # Use gelf-stream -> logstash |
| 35 | # - type: gelf |
| 36 | # host: logstash1003.eqiad.wmnet |
| 37 | # port: 12201 |
| 38 | |
| 39 | # Statsd metrics reporter |
| 40 | metrics: |
| 41 | #type: log |
| 42 | #host: localhost |
| 43 | #port: 8125 |
| 44 | |
| 45 | ratelimiter: |
| 46 | type: memory |
| 47 | |
| 48 | services: |
| 49 | - name: cxserver |
| 50 | # a relative path or the name of an npm package, if different from name |
| 51 | module: ./app.js |
| 52 | # optionally, a version constraint of the npm package |
| 53 | # version: ^0.4.0 |
| 54 | # per-service config |
| 55 | conf: |
| 56 | port: 8080 |
| 57 | # private_key: path to private key file for enabling https |
| 58 | # certificate: path to certificate file for enabling https |
| 59 | # interface: localhost # uncomment to only listen on localhost |
| 60 | # More per-service config settings |
| 61 | # The location of the spec, defaults to spec.yaml if not specified |
| 62 | # spec: ./spec.yaml |
| 63 | # allow cross-domain requests to the API (default *) |
| 64 | cors: '*' |
| 65 | # to disable use: |
| 66 | # cors: false |
| 67 | # to restrict to a particular domain, use: |
| 68 | # cors: restricted.domain.org |
| 69 | # URL of the outbound proxy to use (complete with protocol) |
| 70 | # proxy: http://my.proxy.org:8080 |
| 71 | # the list of domains for which not to use the proxy defined above |
| 72 | # no_proxy_list: |
| 73 | # - domain1.com |
| 74 | # - domain2.org |
| 75 | user_agent: cxserver |
| 76 | # Mediawiki host name. Example {lang}.wikisource.org which get expanded internally to |
| 77 | # es.wikisource.org in a spanish language context. |
| 78 | # Do not prefix with http or https:// |
| 79 | # mw_host: '{lang}.wikipedia.org' |
| 80 | mwapi_req: |
| 81 | body: "{{request.body}}" |
| 82 | query: "{{ default(request.query, {}) }}" |
| 83 | headers: |
| 84 | host: "{{request.params.domain}}" |
| 85 | user-agent: "{{user-agent}}" |
| 86 | method: post |
| 87 | uri: "https://{{domain}}/w/api.php" |
| 88 | restbase_req: |
| 89 | method: '{{request.method}}' |
| 90 | uri: https://{{domain}}/api/rest_v1/{+path} |
| 91 | query: '{{ default(request.query, {}) }}' |
| 92 | headers: '{{request.headers}}' |
| 93 | body: '{{request.body}}' |
| 94 | jwt: |
| 95 | secret: '' |
| 96 | algorithms: |
| 97 | - HS256 |
| 98 | ratelimiter_key: x-client-ip # The request header field that uniquely identify a request source |
| 99 | ratelimiter_rate: 10 |
| 100 | languages: config/languages.yaml |
| 101 | templatemapping: |
| 102 | database: config/templatemapping.db |
| 103 | sectionmapping: |
| 104 | database: config/cx-section-titles-aligned.db |
| 105 | mt: |
| 106 | Apertium: |
| 107 | api: https://apertium.wmflabs.org |
| 108 | # For packaging reasons use separate configuration |
| 109 | languages: config/Apertium.yaml |
| 110 | Elia: |
| 111 | api: https://mt-api.elhuyar.eus/translate_string |
| 112 | languages: config/Elia.yaml |
| 113 | key: null |
| 114 | apiId: null |
| 115 | Google: |
| 116 | api: https://www.googleapis.com/language/translate/v2 |
| 117 | key: null |
| 118 | languages: config/Google.yaml |
| 119 | Yandex: |
| 120 | api: https://translate.yandex.net |
| 121 | key: null |
| 122 | languages: config/Yandex.yaml |
| 123 | Youdao: |
| 124 | api: https://openapi.youdao.com/api |
| 125 | appKey: null |
| 126 | appSecret: null |
| 127 | languages: config/Youdao.yaml |
| 128 | LingoCloud: |
| 129 | api: https://api.interpreter.caiyunai.com/v1 |
| 130 | account: wikimedia |
| 131 | key: null |
| 132 | languages: config/LingoCloud.yaml |
| 133 | OpusMT: |
| 134 | api: https://opusmt.wmflabs.org/api/translate |
| 135 | languages: config/OpusMT.yaml |
| 136 | TestClient: |
| 137 | languages: config/TestClient.yaml |
| 138 | dictionary: |
| 139 | Dictd: |
| 140 | languages: config/Dictd.yaml |
| 141 | JsonDict: |
| 142 | languages: config/JsonDict.yaml |
| 143 | |
| 144 | |
| 145 | |
| 146 | ~/Documents/mediawiki$ cat .env |
| 147 | MW_DOCKER_PORT=8080 |
| 148 | MW_SCRIPT_PATH=/w |
| 149 | MW_SERVER=http://localhost:8080 |
| 150 | MEDIAWIKI_USER=Admin |
| 151 | MEDIAWIKI_PASSWORD=dockerpass |
| 152 | XDEBUG_CONFIG='' |
| 153 | CXSERVER_PORT=8090 |
| 154 | MW_DOCKER_UID=501 |
| 155 | MW_DOCKER_GID=20 |
| 156 | |
| 157 | |
| 158 | |
| 159 | ~/Documents/mediawiki$ cat docker-compose.override.yml |
| 160 | version: '3.7' |
| 161 | services: |
| 162 | mediawiki: |
| 163 | # On Linux, these lines ensure file ownership is set to your host user/group |
| 164 | user: "${MW_DOCKER_UID}:${MW_DOCKER_GID}" |
| 165 | mediawiki-web: |
| 166 | user: "${MW_DOCKER_UID}:${MW_DOCKER_GID}" |
| 167 | mariadb-main: |
| 168 | image: 'bitnami/mariadb:latest' |
| 169 | volumes: |
| 170 | - mariadbdata:/bitnami/mariadb |
| 171 | environment: |
| 172 | - MARIADB_REPLICATION_MODE=master |
| 173 | - MARIADB_REPLICATION_USER=repl_user |
| 174 | - MARIADB_REPLICATION_PASSWORD=repl_password |
| 175 | - MARIADB_ROOT_PASSWORD=main_root_password |
| 176 | - MARIADB_USER=my_user |
| 177 | - MARIADB_PASSWORD=my_password |
| 178 | - MARIADB_DATABASE=my_database |
| 179 | mariadb-replica: |
| 180 | image: 'bitnami/mariadb:latest' |
| 181 | depends_on: |
| 182 | - mariadb-main |
| 183 | environment: |
| 184 | - MARIADB_REPLICATION_MODE=slave |
| 185 | - MARIADB_REPLICATION_USER=repl_user |
| 186 | - MARIADB_REPLICATION_PASSWORD=repl_password |
| 187 | - MARIADB_MASTER_HOST=mariadb-main |
| 188 | - MARIADB_MASTER_PORT_NUMBER=3306 |
| 189 | - MARIADB_MASTER_ROOT_PASSWORD=main_root_password |
| 190 | |
| 191 | cxserver: |
| 192 | build: |
| 193 | context: ../cxserver |
| 194 | volumes: |
| 195 | # map local to remote folder, exclude node_modules |
| 196 | - ../cxserver:/opt/cxserver |
| 197 | - /opt/cxserver/node_modules |
| 198 | ports: |
| 199 | - "${CXSERVER_PORT:-8090}:8080" |
| 200 | command: npm start |
| 201 | |
| 202 | eventlogging: |
| 203 | build: |
| 204 | context: ./extensions/EventLogging |
| 205 | volumes: |
| 206 | # map local to remote folder, exclude node_modules |
| 207 | - ./extensions/EventLogging:/opt/eventlogging |
| 208 | - /opt/eventlogging/node_modules |
| 209 | ports: |
| 210 | - "${EVENTLOGGING_PORT:-8192}:8192" |
| 211 | command: npm run eventgate-devserver |
| 212 | |
| 213 | volumes: |
| 214 | mariadbdata: |
| 215 | driver: local |