From c05ebf701857d15ea462f1ad1b55e3b79aaa9ee1 Mon Sep 17 00:00:00 2001 From: ltardivo Date: Tue, 8 Oct 2024 19:00:32 -0300 Subject: [PATCH 1/7] Moves the docker file to the root level of monorepo to link with lib --- packages/Dockerfile | 32 ++++++++++++ packages/docker-compose.yml | 99 +++++++++++++++++++++++++++++++++++++ 2 files changed, 131 insertions(+) create mode 100644 packages/Dockerfile create mode 100644 packages/docker-compose.yml diff --git a/packages/Dockerfile b/packages/Dockerfile new file mode 100644 index 000000000..f1fea7cec --- /dev/null +++ b/packages/Dockerfile @@ -0,0 +1,32 @@ +# We are using the alpine distribution with Node.js 20 (LTS). +FROM node:20-alpine + +# install dependencies to run cmake +RUN apk add --no-cache cmake make gcc g++ python3 libstdc++ libgcc curl bash zeromq zeromq-dev + +# Install node-gyp and node-gyp-build globally to avoid issues during build +RUN npm install -g node-gyp node-gyp-build + +# Set the working directory inside the container +WORKDIR /dist + +# Copy the entire contents of the host's "monorepo" directory into the container's /dist directory +COPY . /dist + +# Remove the existing node_modules directory +RUN rm -rf node_modules + +# Install dependencies +RUN npm install --build-from-source + +# Ensure that the necessary binaries are in the PATH +ENV PATH="/dist/node_modules/.bin:${PATH}" + +# Set the working directory to "monorepo/packages/node" +WORKDIR /dist/packages/node + +# Expose the necessary port +EXPOSE 1031 + +# Define the command to run when the container starts +CMD ["npm", "start"] diff --git a/packages/docker-compose.yml b/packages/docker-compose.yml new file mode 100644 index 000000000..8cc88a27c --- /dev/null +++ b/packages/docker-compose.yml @@ -0,0 +1,99 @@ +services: + db: + image: postgres + env_file: .env + restart: always + healthcheck: + test: [ "CMD-SHELL", "pg_isready -U ${POSTGRES_USER}" ] + # command: ["postgres", "-c", "log_statement=all"] + ports: + - "${POSTGRES_PORT}:${POSTGRES_PORT}" + networks: + - bcn + environment: + - POSTGRES_PORT=${POSTGRES_PORT} + - POSTGRES_HOST=${POSTGRES_HOST} + volumes: + - ./chain-setup/${BCN_CHAIN}/${BCN_NETWORK}/db-data:/var/lib/postgresql/data + - ./db/db_schema.sql:/docker-entrypoint-initdb.d/db_schema.sql + node: + image: ${BITCOIN_IMAGE} + networks: + - bitcoin + restart: always + ports: + - ${BITCOIN_RPC_PORT}:${BITCOIN_RPC_PORT} + - ${BCN_ZMQ_PORT}:${BCN_ZMQ_PORT} + volumes: + - ./chain-setup/${BCN_CHAIN}/${BCN_NETWORK}/blockchain-data:${BITCOIN_DATA_DIR} + - ./${BITCOIN_CONF_FILE}:${BITCOIN_DATA_DIR}/${BITCOIN_CONF_FILE} + bcn: + image: bitcoin-computer-node + env_file: .env + restart: always + build: . + healthcheck: + test: + [ + "CMD-SHELL", + "curl -f http://localhost:${BCN_PORT}/ || exit 1" + ] + interval: 30s + timeout: 10s + retries: 3 + start_period: 30s + command: npm start + ports: + - ${BCN_PORT}:${BCN_PORT} + environment: + - BCN_CHAIN=${BCN_CHAIN} + - BCN_NETWORK=${BCN_NETWORK} + - BCN_ENV=${BCN_ENV} + - BCN_URL=${BCN_URL} + - BCN_ZMQ_URL=${BCN_ZMQ_URL} + - BITCOIN_RPC_HOST=${BITCOIN_RPC_HOST} + - BITCOIN_RPC_PORT=${BITCOIN_RPC_PORT} + - BITCOIN_RPC_PROTOCOL=${BITCOIN_RPC_PROTOCOL} + - BITCOIN_RPC_USER=${BITCOIN_RPC_USER} + - BITCOIN_RPC_PASSWORD=${BITCOIN_RPC_PASSWORD} + - POSTGRES_PORT=${POSTGRES_PORT} + - POSTGRES_HOST=${POSTGRES_HOST} + working_dir: /dist + depends_on: + - db + - node + networks: + - bitcoin + - bcn + volumes: + - ./logs:/dist/logs + sync: + command: npm run sync + image: bitcoin-computer-node + env_file: .env + restart: always + environment: + - BCN_CHAIN=${BCN_CHAIN} + - BCN_NETWORK=${BCN_NETWORK} + - BCN_ENV=${BCN_ENV} + - BCN_URL=${BCN_URL} + - BCN_ZMQ_URL=${BCN_ZMQ_URL} + - BCN_THREADS=${BCN_THREADS} + - BITCOIN_RPC_HOST=${BITCOIN_RPC_HOST} + - BITCOIN_RPC_PORT=${BITCOIN_RPC_PORT} + - BITCOIN_RPC_PROTOCOL=${BITCOIN_RPC_PROTOCOL} + - BITCOIN_RPC_USER=${BITCOIN_RPC_USER} + - BITCOIN_RPC_PASSWORD=${BITCOIN_RPC_PASSWORD} + - POSTGRES_PORT=${POSTGRES_PORT} + - POSTGRES_HOST=${POSTGRES_HOST} + volumes: + - ./logs:/dist/logs + depends_on: + - db + - node + networks: + - bitcoin + - bcn +networks: + bitcoin: null + bcn: null From da044ad42387812a15520997645c1dcfc8e1b8c3 Mon Sep 17 00:00:00 2001 From: ltardivo Date: Tue, 8 Oct 2024 19:37:23 -0300 Subject: [PATCH 2/7] Adds vite packages to .dockerignore --- .dockerignore | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.dockerignore b/.dockerignore index 38dd31a44..d78d35934 100644 --- a/.dockerignore +++ b/.dockerignore @@ -15,7 +15,8 @@ packages/nakamotojs/ts_src packages/node/coverage/ packages/node/logs/ packages/node/node_modules/ -packages/node/data/ +packages/node/chain-setup/**/**/db-data +packages/node/chain-setup/**/**/blockchain-data packages/node/.env packages/node/.DS_Store packages/node/src @@ -30,13 +31,17 @@ packages/components packages/cra-template packages/docs packages/explorer -packages/nft +packages/explorer-vite packages/ft packages/ft2 +packages/nft +packages/nft-vite packages/nodejs-template packages/swap/ packages/TBC*/ +packages/vite-template packages/wallet +packages/wallet-vite packages/website .env From 1f40b7dabd4d75c5ea3bef89337344dc2c7ce6ab Mon Sep 17 00:00:00 2001 From: ltardivo Date: Tue, 8 Oct 2024 19:38:27 -0300 Subject: [PATCH 3/7] Moves Dockerfile to monorepo root level --- packages/Dockerfile => Dockerfile | 0 packages/docker-compose.yml | 99 ------------------------------- packages/node/Dockerfile | 32 ---------- 3 files changed, 131 deletions(-) rename packages/Dockerfile => Dockerfile (100%) delete mode 100644 packages/docker-compose.yml delete mode 100644 packages/node/Dockerfile diff --git a/packages/Dockerfile b/Dockerfile similarity index 100% rename from packages/Dockerfile rename to Dockerfile diff --git a/packages/docker-compose.yml b/packages/docker-compose.yml deleted file mode 100644 index 8cc88a27c..000000000 --- a/packages/docker-compose.yml +++ /dev/null @@ -1,99 +0,0 @@ -services: - db: - image: postgres - env_file: .env - restart: always - healthcheck: - test: [ "CMD-SHELL", "pg_isready -U ${POSTGRES_USER}" ] - # command: ["postgres", "-c", "log_statement=all"] - ports: - - "${POSTGRES_PORT}:${POSTGRES_PORT}" - networks: - - bcn - environment: - - POSTGRES_PORT=${POSTGRES_PORT} - - POSTGRES_HOST=${POSTGRES_HOST} - volumes: - - ./chain-setup/${BCN_CHAIN}/${BCN_NETWORK}/db-data:/var/lib/postgresql/data - - ./db/db_schema.sql:/docker-entrypoint-initdb.d/db_schema.sql - node: - image: ${BITCOIN_IMAGE} - networks: - - bitcoin - restart: always - ports: - - ${BITCOIN_RPC_PORT}:${BITCOIN_RPC_PORT} - - ${BCN_ZMQ_PORT}:${BCN_ZMQ_PORT} - volumes: - - ./chain-setup/${BCN_CHAIN}/${BCN_NETWORK}/blockchain-data:${BITCOIN_DATA_DIR} - - ./${BITCOIN_CONF_FILE}:${BITCOIN_DATA_DIR}/${BITCOIN_CONF_FILE} - bcn: - image: bitcoin-computer-node - env_file: .env - restart: always - build: . - healthcheck: - test: - [ - "CMD-SHELL", - "curl -f http://localhost:${BCN_PORT}/ || exit 1" - ] - interval: 30s - timeout: 10s - retries: 3 - start_period: 30s - command: npm start - ports: - - ${BCN_PORT}:${BCN_PORT} - environment: - - BCN_CHAIN=${BCN_CHAIN} - - BCN_NETWORK=${BCN_NETWORK} - - BCN_ENV=${BCN_ENV} - - BCN_URL=${BCN_URL} - - BCN_ZMQ_URL=${BCN_ZMQ_URL} - - BITCOIN_RPC_HOST=${BITCOIN_RPC_HOST} - - BITCOIN_RPC_PORT=${BITCOIN_RPC_PORT} - - BITCOIN_RPC_PROTOCOL=${BITCOIN_RPC_PROTOCOL} - - BITCOIN_RPC_USER=${BITCOIN_RPC_USER} - - BITCOIN_RPC_PASSWORD=${BITCOIN_RPC_PASSWORD} - - POSTGRES_PORT=${POSTGRES_PORT} - - POSTGRES_HOST=${POSTGRES_HOST} - working_dir: /dist - depends_on: - - db - - node - networks: - - bitcoin - - bcn - volumes: - - ./logs:/dist/logs - sync: - command: npm run sync - image: bitcoin-computer-node - env_file: .env - restart: always - environment: - - BCN_CHAIN=${BCN_CHAIN} - - BCN_NETWORK=${BCN_NETWORK} - - BCN_ENV=${BCN_ENV} - - BCN_URL=${BCN_URL} - - BCN_ZMQ_URL=${BCN_ZMQ_URL} - - BCN_THREADS=${BCN_THREADS} - - BITCOIN_RPC_HOST=${BITCOIN_RPC_HOST} - - BITCOIN_RPC_PORT=${BITCOIN_RPC_PORT} - - BITCOIN_RPC_PROTOCOL=${BITCOIN_RPC_PROTOCOL} - - BITCOIN_RPC_USER=${BITCOIN_RPC_USER} - - BITCOIN_RPC_PASSWORD=${BITCOIN_RPC_PASSWORD} - - POSTGRES_PORT=${POSTGRES_PORT} - - POSTGRES_HOST=${POSTGRES_HOST} - volumes: - - ./logs:/dist/logs - depends_on: - - db - - node - networks: - - bitcoin - - bcn -networks: - bitcoin: null - bcn: null diff --git a/packages/node/Dockerfile b/packages/node/Dockerfile deleted file mode 100644 index f1fea7cec..000000000 --- a/packages/node/Dockerfile +++ /dev/null @@ -1,32 +0,0 @@ -# We are using the alpine distribution with Node.js 20 (LTS). -FROM node:20-alpine - -# install dependencies to run cmake -RUN apk add --no-cache cmake make gcc g++ python3 libstdc++ libgcc curl bash zeromq zeromq-dev - -# Install node-gyp and node-gyp-build globally to avoid issues during build -RUN npm install -g node-gyp node-gyp-build - -# Set the working directory inside the container -WORKDIR /dist - -# Copy the entire contents of the host's "monorepo" directory into the container's /dist directory -COPY . /dist - -# Remove the existing node_modules directory -RUN rm -rf node_modules - -# Install dependencies -RUN npm install --build-from-source - -# Ensure that the necessary binaries are in the PATH -ENV PATH="/dist/node_modules/.bin:${PATH}" - -# Set the working directory to "monorepo/packages/node" -WORKDIR /dist/packages/node - -# Expose the necessary port -EXPOSE 1031 - -# Define the command to run when the container starts -CMD ["npm", "start"] From ea935599eb3bdd04ed2eddb7089665ea510a13a4 Mon Sep 17 00:00:00 2001 From: ltardivo Date: Tue, 8 Oct 2024 20:15:52 -0300 Subject: [PATCH 4/7] Sets packages/node as working directory for docker --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index f1fea7cec..440fd9785 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,7 +23,7 @@ RUN npm install --build-from-source ENV PATH="/dist/node_modules/.bin:${PATH}" # Set the working directory to "monorepo/packages/node" -WORKDIR /dist/packages/node +WORKDIR packages/node # Expose the necessary port EXPOSE 1031 From 1b9e858b4275b859a94929414c69add73a613f96 Mon Sep 17 00:00:00 2001 From: ltardivo Date: Tue, 8 Oct 2024 20:23:44 -0300 Subject: [PATCH 5/7] Builds the node from monorepo --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index ead6edf21..e7abfc58f 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "packages/*" ], "scripts": { + "build-node": "docker build -t bitcoin-computer-node .", "check-obfuscation": "./scripts/check-obfuscation.sh", "husky-checks": "./scripts/husky-checks.sh", "prepare": "husky install", From 2bf1220283d6b46fd437c94bc0f1a3a9bfbaba55 Mon Sep 17 00:00:00 2001 From: ltardivo Date: Tue, 8 Oct 2024 20:24:24 -0300 Subject: [PATCH 6/7] Removes working_dir tag for bcn service at docker-compose file --- packages/node/docker-compose.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/node/docker-compose.yml b/packages/node/docker-compose.yml index 8cc88a27c..ba1563e49 100644 --- a/packages/node/docker-compose.yml +++ b/packages/node/docker-compose.yml @@ -58,7 +58,6 @@ services: - BITCOIN_RPC_PASSWORD=${BITCOIN_RPC_PASSWORD} - POSTGRES_PORT=${POSTGRES_PORT} - POSTGRES_HOST=${POSTGRES_HOST} - working_dir: /dist depends_on: - db - node From 61e34610fbd664f084ac5e5d0d3c88fdf3423a46 Mon Sep 17 00:00:00 2001 From: ltardivo Date: Wed, 9 Oct 2024 15:55:13 -0300 Subject: [PATCH 7/7] Changes packages name in the bitcoin-computer scope --- packages/explorer-vite/package.json | 2 +- packages/nft-vite/package.json | 2 +- packages/vite-template/package.json | 2 +- packages/wallet-vite/package.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/explorer-vite/package.json b/packages/explorer-vite/package.json index 861b7eb0b..020698d85 100644 --- a/packages/explorer-vite/package.json +++ b/packages/explorer-vite/package.json @@ -1,5 +1,5 @@ { - "name": "explorer-vite", + "name": "@bitcoin-computer/explorer-vite", "private": true, "version": "0.21.0-beta.0", "type": "module", diff --git a/packages/nft-vite/package.json b/packages/nft-vite/package.json index 97175fa2f..cbfc9dd34 100644 --- a/packages/nft-vite/package.json +++ b/packages/nft-vite/package.json @@ -1,5 +1,5 @@ { - "name": "nft-vite", + "name": "@bitcoin-computer/nft-vite", "private": true, "version": "0.21.0-beta.0", "type": "module", diff --git a/packages/vite-template/package.json b/packages/vite-template/package.json index 7c2f6a580..6bdf925c3 100644 --- a/packages/vite-template/package.json +++ b/packages/vite-template/package.json @@ -1,5 +1,5 @@ { - "name": "vite-project", + "name": "@bitcoin-computer/vite-project", "private": true, "version": "0.21.0-beta.0", "type": "module", diff --git a/packages/wallet-vite/package.json b/packages/wallet-vite/package.json index 16fd211b9..0cb3a6c35 100644 --- a/packages/wallet-vite/package.json +++ b/packages/wallet-vite/package.json @@ -1,5 +1,5 @@ { - "name": "wallet-vite", + "name": "@bitcoin-computer/wallet-vite", "private": true, "version": "0.21.0-beta.0", "type": "module",