Files
pezkuwi-subquery/docker/Dockerfile.node
T
pezkuwichain a8b7d16b97 Patch api-augment exports map instead of filesystem shim
Node.js checks package.json exports before filesystem, so the
mkdir+echo shim didn't work. Now patches the exports map with
node -e to add ./substrate pointing to pezkuwi augmentation.
2026-02-14 04:33:32 +03:00

45 lines
2.0 KiB
Docker

FROM node:20-alpine
WORKDIR /app
# Install @subql/node with @polkadot aliased to @pezkuwi
RUN npm init -y && \
npm install @subql/node \
@polkadot/api@npm:@pezkuwi/api@^16.5.36 \
@polkadot/api-augment@npm:@pezkuwi/api-augment@^16.5.36 \
@polkadot/api-derive@npm:@pezkuwi/api-derive@^16.5.36 \
@polkadot/types@npm:@pezkuwi/types@^16.5.36 \
@polkadot/types-augment@npm:@pezkuwi/types-augment@^16.5.36 \
@polkadot/types-codec@npm:@pezkuwi/types-codec@^16.5.36 \
@polkadot/types-create@npm:@pezkuwi/types-create@^16.5.36 \
@polkadot/types-known@npm:@pezkuwi/types-known@^16.5.36 \
@polkadot/rpc-core@npm:@pezkuwi/rpc-core@^16.5.36 \
@polkadot/rpc-provider@npm:@pezkuwi/rpc-provider@^16.5.36 \
@polkadot/rpc-augment@npm:@pezkuwi/rpc-augment@^16.5.36 \
@polkadot/util@npm:@pezkuwi/util@^14.0.25 \
@polkadot/util-crypto@npm:@pezkuwi/util-crypto@^14.0.25 \
@polkadot/keyring@npm:@pezkuwi/keyring@^14.0.25 \
@polkadot/networks@npm:@pezkuwi/networks@^14.0.25 \
@polkadot/wasm-crypto@npm:@pezkuwi/wasm-crypto@^7.5.18 \
@polkadot/wasm-crypto-wasm@npm:@pezkuwi/wasm-crypto-wasm@^7.5.17 \
@polkadot/wasm-util@npm:@pezkuwi/wasm-util@^7.5.17 \
@polkadot/wasm-bridge@npm:@pezkuwi/wasm-bridge@^7.5.17 \
@polkadot/wasm-crypto-asmjs@npm:@pezkuwi/wasm-crypto-asmjs@^7.5.17 \
@polkadot/wasm-crypto-init@npm:@pezkuwi/wasm-crypto-init@^7.5.17
# @subql/node requires '@polkadot/api-augment/substrate' but @pezkuwi uses
# chain-specific paths (./pezkuwi, ./bizinikiwi). Patch the exports map in
# package.json to add ./substrate pointing to pezkuwi augmentation.
RUN node -e " \
const fs = require('fs'); \
const p = '/app/node_modules/@polkadot/api-augment/package.json'; \
const pkg = JSON.parse(fs.readFileSync(p, 'utf8')); \
pkg.exports['./substrate'] = { \
require: './cjs/pezkuwi/index.js', \
default: './pezkuwi/index.js' \
}; \
fs.writeFileSync(p, JSON.stringify(pkg, null, 2)); \
"
ENTRYPOINT ["/app/node_modules/.bin/subql-node"]