From f3e97e2e2d9d8a3c83668218dfe6b7c2f0c713cd Mon Sep 17 00:00:00 2001 From: Bastien Date: Tue, 2 Feb 2021 19:25:33 +0100 Subject: [PATCH 1/3] Default dir should be the same than config-mempool.json --- docker/backend/start.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/backend/start.sh b/docker/backend/start.sh index d758290f7..ed3aa1524 100644 --- a/docker/backend/start.sh +++ b/docker/backend/start.sh @@ -2,7 +2,7 @@ #MEMPOOL __MEMPOOL_BACKEND_MAINNET_HTTP_PORT__=${BACKEND_MAINNET_HTTP_PORT:=8999} -__MEMPOOL_BACKEND_MAINNET_CACHE_DIR__=${CACHE_DIR:=./cache} +__MEMPOOL_BACKEND_MAINNET_CACHE_DIR__=${CACHE_DIR:=./} # BITCOIN __BITCOIN_MAINNET_RPC_HOST__=${RPC_HOST:=127.0.0.1} __BITCOIN_MAINNET_RPC_PORT__=${RPC_PORT:=8332} From 543fe8c735b9495465bd5da29efa500de165b9a1 Mon Sep 17 00:00:00 2001 From: Bastien Date: Tue, 2 Feb 2021 23:45:54 +0100 Subject: [PATCH 2/3] Set all dir to be dockerized --- {docker/backend => backend}/Dockerfile | 2 + backend/master | 1 + .../mempool-config-docker.json | 0 {docker/backend => backend}/start.sh | 2 +- {docker/backend => backend}/wait-for-it.sh | 0 docker/README.md | 5 - docker/build.sh | 10 -- docker/init.sh | 22 --- {docker/frontend => frontend}/Dockerfile | 4 +- {docker/frontend => frontend}/entrypoint.sh | 0 frontend/nginx-docker.conf | 128 ++++++++++++++++++ frontend/nginx-mempool-docker.conf | 62 +++++++++ {docker/frontend => frontend}/wait-for | 0 {docker/mysql => mysql}/Dockerfile | 0 {docker/mysql => mysql}/mysql-mempool.cnf | 0 mysql/setup.sql | 107 +++++++++++++++ 16 files changed, 303 insertions(+), 40 deletions(-) rename {docker/backend => backend}/Dockerfile (77%) create mode 100644 backend/master rename docker/backend/mempool-config.json => backend/mempool-config-docker.json (100%) rename {docker/backend => backend}/start.sh (96%) rename {docker/backend => backend}/wait-for-it.sh (100%) delete mode 100644 docker/README.md delete mode 100755 docker/build.sh delete mode 100755 docker/init.sh rename {docker/frontend => frontend}/Dockerfile (83%) rename {docker/frontend => frontend}/entrypoint.sh (100%) create mode 100644 frontend/nginx-docker.conf create mode 100644 frontend/nginx-mempool-docker.conf rename {docker/frontend => frontend}/wait-for (100%) rename {docker/mysql => mysql}/Dockerfile (100%) rename {docker/mysql => mysql}/mysql-mempool.cnf (100%) create mode 100644 mysql/setup.sql diff --git a/docker/backend/Dockerfile b/backend/Dockerfile similarity index 77% rename from docker/backend/Dockerfile rename to backend/Dockerfile index 5db88de53..88a0b8272 100644 --- a/docker/backend/Dockerfile +++ b/backend/Dockerfile @@ -2,11 +2,13 @@ FROM node:12-buster-slim AS builder WORKDIR /build COPY . . +RUN sed -i "s!../.git/refs/heads/master!master!g" ./src/api/backend-info.ts RUN apt-get update RUN apt-get install -y build-essential python3 pkg-config RUN npm ci --production RUN npm i typescript RUN npm run build +RUN mv mempool-config-docker.json mempool-config.json FROM node:12-buster-slim diff --git a/backend/master b/backend/master new file mode 100644 index 000000000..7cfb44686 --- /dev/null +++ b/backend/master @@ -0,0 +1 @@ +9d02ab1eb5ffb60d38128df903e47e11b95f13d5 diff --git a/docker/backend/mempool-config.json b/backend/mempool-config-docker.json similarity index 100% rename from docker/backend/mempool-config.json rename to backend/mempool-config-docker.json diff --git a/docker/backend/start.sh b/backend/start.sh similarity index 96% rename from docker/backend/start.sh rename to backend/start.sh index ed3aa1524..e17d337fb 100644 --- a/docker/backend/start.sh +++ b/backend/start.sh @@ -15,7 +15,7 @@ __ELECTRS_MAINNET_HTTP_PORT__=${ELECTRS_PORT:=50002} __MYSQL_HOST__=${MYSQL_HOST:=127.0.0.1} __MYSQL_PORT__=${MYSQL_PORT:=3306} -mkdir -p "${__MEMPOOL_BACKEND_CACHE_DIR__}" +mkdir -p "${__MEMPOOL_BACKEND_MAINNET_CACHE_DIR__}" sed -i "s/__BITCOIN_MAINNET_RPC_HOST__/${__BITCOIN_MAINNET_RPC_HOST__}/g" mempool-config.json sed -i "s/__BITCOIN_MAINNET_RPC_PORT__/${__BITCOIN_MAINNET_RPC_PORT__}/g" mempool-config.json diff --git a/docker/backend/wait-for-it.sh b/backend/wait-for-it.sh similarity index 100% rename from docker/backend/wait-for-it.sh rename to backend/wait-for-it.sh diff --git a/docker/README.md b/docker/README.md deleted file mode 100644 index 559cb0240..000000000 --- a/docker/README.md +++ /dev/null @@ -1,5 +0,0 @@ -## Init -./docker/init.sh - -## Build -./docker/build.sh YOUR_DOCKER_HUB_NAME VERSION diff --git a/docker/build.sh b/docker/build.sh deleted file mode 100755 index 0bfbae4d6..000000000 --- a/docker/build.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -cd ./backend -docker buildx build --platform linux/amd64,linux/arm64 -t $1/mempool-backend:$2 --push . - -cd ../frontend -docker buildx build --platform linux/amd64,linux/arm64 -t $1/mempool-frontend:$2 --push . - -cd ../mysql -docker buildx build --platform linux/amd64,linux/arm64 -t $1/mempool-db:$2 --push . diff --git a/docker/init.sh b/docker/init.sh deleted file mode 100755 index f3f4363f2..000000000 --- a/docker/init.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh - -#backend -gitMaster="\.\.\/\.git\/refs\/heads\/master" -cp .git/refs/heads/master ./backend -cp ./docker/backend/* ./backend/ -sed -i "s/${gitMaster}/master/g" ./backend/src/api/backend-info.ts - -#frontend -localhostIP="127.0.0.1" -cp ./docker/frontend/* ./frontend -cp ./nginx.conf ./frontend/ -cp ./nginx-mempool.conf ./frontend/ -sed -i "s/${localhostIP}:/0.0.0.0:80/g" ./frontend/nginx.conf -sed -i "s/${localhostIP}/0.0.0.0/g" ./frontend/nginx.conf -sed -i "s/user nobody;//g" ./frontend/nginx.conf -sed -i "s!/etc/nginx/nginx-mempool.conf!/etc/nginx/conf.d/nginx-mempool.conf!g" ./frontend/nginx.conf -sed -i "s/${localhostIP}:/__MEMPOOL_BACKEND_MAINNET_HTTP_HOST__:/g" ./frontend/nginx-mempool.conf - -#db -cp -fr docker/mysql . -cp ./mariadb-structure.sql ./mysql/setup.sql diff --git a/docker/frontend/Dockerfile b/frontend/Dockerfile similarity index 83% rename from docker/frontend/Dockerfile rename to frontend/Dockerfile index e06b9563b..5d7818008 100644 --- a/docker/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -14,8 +14,8 @@ WORKDIR /patch COPY --from=builder /build/entrypoint.sh . COPY --from=builder /build/wait-for . COPY --from=builder /build/dist/mempool /var/www/mempool -COPY --from=builder /build/nginx.conf /etc/nginx/ -COPY --from=builder /build/nginx-mempool.conf /etc/nginx/conf.d/ +COPY --from=builder /build/nginx-docker.conf /etc/nginx/nginx.conf +COPY --from=builder /build/nginx-mempool-docker.conf /etc/nginx/conf.d/nginx-mempool.conf RUN chmod +x /patch/entrypoint.sh RUN chmod +x /patch/wait-for diff --git a/docker/frontend/entrypoint.sh b/frontend/entrypoint.sh similarity index 100% rename from docker/frontend/entrypoint.sh rename to frontend/entrypoint.sh diff --git a/frontend/nginx-docker.conf b/frontend/nginx-docker.conf new file mode 100644 index 000000000..aa3b8a6c9 --- /dev/null +++ b/frontend/nginx-docker.conf @@ -0,0 +1,128 @@ + +pid /var/run/nginx.pid; + +worker_processes auto; +worker_rlimit_nofile 100000; + +events { + worker_connections 9000; + multi_accept on; +} + +http { + sendfile on; + tcp_nopush on; + tcp_nodelay on; + + server_tokens off; + server_name_in_redirect off; + + include /etc/nginx/mime.types; + default_type application/octet-stream; + + access_log /var/log/nginx/access.log; + error_log /var/log/nginx/error.log; + + # reset timed out connections freeing ram + reset_timedout_connection on; + # maximum time between packets the client can pause when sending nginx any data + client_body_timeout 10s; + # maximum time the client has to send the entire header to nginx + client_header_timeout 10s; + # timeout which a single keep-alive client connection will stay open + keepalive_timeout 69s; + # maximum time between packets nginx is allowed to pause when sending the client data + send_timeout 10s; + + # number of requests per connection, does not affect SPDY + keepalive_requests 100; + + # enable gzip compression + gzip on; + gzip_vary on; + gzip_comp_level 6; + gzip_min_length 1000; + gzip_proxied expired no-cache no-store private auth; + # text/html is always compressed by gzip module + gzip_types application/javascript application/json application/ld+json application/manifest+json application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard; + + # limit request body size + client_max_body_size 10m; + + # proxy cache + proxy_cache off; + proxy_cache_path /var/cache/nginx keys_zone=cache:20m levels=1:2 inactive=600s max_size=500m; + types_hash_max_size 2048; + + # exempt localhost from rate limit + geo $limited_ip { + default 1; + 0.0.0.0 0; + } + map $limited_ip $limited_ip_key { + 1 $binary_remote_addr; + 0 ''; + } + + # rate limit requests + limit_req_zone $limited_ip_key zone=api:5m rate=200r/m; + limit_req_zone $limited_ip_key zone=electrs:5m rate=2000r/m; + limit_req_status 429; + + # rate limit connections + limit_conn_zone $limited_ip_key zone=websocket:10m; + limit_conn_status 429; + + map $http_accept_language $header_lang { + default en-US; + ~*^en-US en-US; + ~*^en en-US; + ~*^ar ar; + ~*^cs cs; + ~*^de de; + ~*^es es; + ~*^fa fa; + ~*^fr fr; + ~*^ja ja; + ~*^ka ka; + ~*^hu hu; + ~*^nl nl; + ~*^nn nn; + ~*^pt pt; + ~*^sl sl; + ~*^sv sv; + ~*^tr tr; + ~*^uk uk; + ~*^vi vi; + ~*^zh zh; + } + + map $cookie_lang $lang { + default $header_lang; + ~*^en-US en-US; + ~*^en en-US; + ~*^ar ar; + ~*^cs cs; + ~*^de de; + ~*^es es; + ~*^fa fa; + ~*^fr fr; + ~*^ja ja; + ~*^ka ka; + ~*^hu hu; + ~*^nl nl; + ~*^nn nn; + ~*^pt pt; + ~*^sl sl; + ~*^sv sv; + ~*^tr tr; + ~*^uk uk; + ~*^vi vi; + ~*^zh zh; + } + + server { + listen 0.0.0.0:8080; + include /etc/nginx/conf.d/nginx-mempool.conf; + } +} diff --git a/frontend/nginx-mempool-docker.conf b/frontend/nginx-mempool-docker.conf new file mode 100644 index 000000000..e32234e39 --- /dev/null +++ b/frontend/nginx-mempool-docker.conf @@ -0,0 +1,62 @@ + access_log /var/log/nginx/access_mempool.log; + error_log /var/log/nginx/error_mempool.log; + + root /var/www/mempool/browser; + + index index.html; + + # fallback for all URLs i.e. /address/foo /tx/foo /block/000 + location / { + try_files /$lang/$uri /$lang/$uri/ $uri $uri/ /en-US/$uri @index-redirect; + } + location @index-redirect { + add_header vary accept-language; + rewrite (.*) /$lang/index.html; + } + + # location block using regex are matched in order + + # used to rewrite resources from // to /en-US/ + location ~ ^/(ar|bg|bs|ca|cs|da|de|et|el|es|eo|eu|fa|fr|gl|ko|hr|id|it|he|ka|lv|lt|hu|mk|ms|nl|ja|ka|no|nb|nn|pl|pt|pt-BR|ro|ru|sk|sl|sr|sh|fi|sv|th|tr|uk|vi|zh)/resources/ { + rewrite ^/[a-zA-Z-]*/resources/(.*) /en-US/resources/$1; + } + # used for cookie override + location ~ ^/(ar|bg|bs|ca|cs|da|de|et|el|es|eo|eu|fa|fr|gl|ko|hr|id|it|he|ka|lv|lt|hu|mk|ms|nl|ja|ka|no|nb|nn|pl|pt|pt-BR|ro|ru|sk|sl|sr|sh|fi|sv|th|tr|uk|vi|zh)/ { + try_files $uri $uri/ /$1/index.html =404; + } + + # static API docs + location = /api { + try_files $uri $uri/ /en-US/index.html =404; + } + location = /api/ { + try_files $uri $uri/ /en-US/index.html =404; + } + + # mainnet API + location /api/v1/donations { + proxy_pass https://mempool.space; + } + location /api/v1/donations/images { + proxy_pass https://mempool.space; + } + location /api/v1/ws { + proxy_pass http://__MEMPOOL_BACKEND_MAINNET_HTTP_HOST__:8999/; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "Upgrade"; + } + location /api/v1 { + proxy_pass http://__MEMPOOL_BACKEND_MAINNET_HTTP_HOST__:8999/api/v1; + } + location /api/ { + proxy_pass http://__MEMPOOL_BACKEND_MAINNET_HTTP_HOST__:8999/api/v1/; + } + + # mainnet API + location /ws { + proxy_pass http://__MEMPOOL_BACKEND_MAINNET_HTTP_HOST__:8999/; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "Upgrade"; + } diff --git a/docker/frontend/wait-for b/frontend/wait-for similarity index 100% rename from docker/frontend/wait-for rename to frontend/wait-for diff --git a/docker/mysql/Dockerfile b/mysql/Dockerfile similarity index 100% rename from docker/mysql/Dockerfile rename to mysql/Dockerfile diff --git a/docker/mysql/mysql-mempool.cnf b/mysql/mysql-mempool.cnf similarity index 100% rename from docker/mysql/mysql-mempool.cnf rename to mysql/mysql-mempool.cnf diff --git a/mysql/setup.sql b/mysql/setup.sql new file mode 100644 index 000000000..d045b3ce3 --- /dev/null +++ b/mysql/setup.sql @@ -0,0 +1,107 @@ +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +SET time_zone = "+00:00"; + +CREATE TABLE `blocks` ( + `height` int(11) NOT NULL, + `hash` varchar(65) NOT NULL, + `size` int(11) NOT NULL, + `weight` int(11) NOT NULL, + `minFee` int(11) NOT NULL, + `maxFee` int(11) NOT NULL, + `time` int(11) NOT NULL, + `fees` double NOT NULL, + `nTx` int(11) NOT NULL, + `medianFee` double NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE `statistics` ( + `id` int(11) NOT NULL, + `added` datetime NOT NULL, + `unconfirmed_transactions` int(11) UNSIGNED NOT NULL, + `tx_per_second` float UNSIGNED NOT NULL, + `vbytes_per_second` int(10) UNSIGNED NOT NULL, + `mempool_byte_weight` int(10) UNSIGNED NOT NULL, + `fee_data` longtext NOT NULL, + `total_fee` double UNSIGNED NOT NULL, + `vsize_1` int(11) NOT NULL, + `vsize_2` int(11) NOT NULL, + `vsize_3` int(11) NOT NULL, + `vsize_4` int(11) NOT NULL, + `vsize_5` int(11) NOT NULL, + `vsize_6` int(11) NOT NULL, + `vsize_8` int(11) NOT NULL, + `vsize_10` int(11) NOT NULL, + `vsize_12` int(11) NOT NULL, + `vsize_15` int(11) NOT NULL, + `vsize_20` int(11) NOT NULL, + `vsize_30` int(11) NOT NULL, + `vsize_40` int(11) NOT NULL, + `vsize_50` int(11) NOT NULL, + `vsize_60` int(11) NOT NULL, + `vsize_70` int(11) NOT NULL, + `vsize_80` int(11) NOT NULL, + `vsize_90` int(11) NOT NULL, + `vsize_100` int(11) NOT NULL, + `vsize_125` int(11) NOT NULL, + `vsize_150` int(11) NOT NULL, + `vsize_175` int(11) NOT NULL, + `vsize_200` int(11) NOT NULL, + `vsize_250` int(11) NOT NULL, + `vsize_300` int(11) NOT NULL, + `vsize_350` int(11) NOT NULL, + `vsize_400` int(11) NOT NULL, + `vsize_500` int(11) NOT NULL, + `vsize_600` int(11) NOT NULL, + `vsize_700` int(11) NOT NULL, + `vsize_800` int(11) NOT NULL, + `vsize_900` int(11) NOT NULL, + `vsize_1000` int(11) NOT NULL, + `vsize_1200` int(11) NOT NULL, + `vsize_1400` int(11) NOT NULL, + `vsize_1600` int(11) NOT NULL, + `vsize_1800` int(11) NOT NULL, + `vsize_2000` int(11) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE `transactions` ( + `blockheight` int(11) NOT NULL, + `txid` varchar(65) NOT NULL, + `fee` double NOT NULL, + `feePerVsize` double NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + +ALTER TABLE `blocks` + ADD PRIMARY KEY (`height`); + +ALTER TABLE `statistics` + ADD PRIMARY KEY (`id`); + +ALTER TABLE `transactions` + ADD PRIMARY KEY (`txid`), + ADD KEY `blockheight` (`blockheight`); + + +ALTER TABLE `statistics` + MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; + + +CREATE TABLE `donations` ( + `id` int(11) NOT NULL, + `added` datetime NOT NULL, + `amount` float NOT NULL, + `handle` varchar(250) NOT NULL, + `order_id` varchar(25) NOT NULL, + `imageUrl` varchar(250) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +ALTER TABLE `donations` + ADD PRIMARY KEY (`id`); + +ALTER TABLE `donations` + MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; + +ALTER TABLE `donations` ADD UNIQUE(`order_id`); + +ALTER TABLE `donations` ADD `image` MEDIUMBLOB NULL AFTER `imageUrl`; +ALTER TABLE `donations` ADD `twitter_id` VARCHAR(250) NULL AFTER `handle`; From 6782229a3d12e914d8fc82e6567731ff0ede2556 Mon Sep 17 00:00:00 2001 From: Bastien Date: Wed, 3 Feb 2021 02:12:15 +0100 Subject: [PATCH 3/3] Move docker files in subdir --- backend/Dockerfile | 5 ++- backend/{ => docker}/master | 0 backend/{ => docker}/start.sh | 0 backend/{ => docker}/wait-for-it.sh | 0 backend/mempool-config-docker.json | 38 ------------------- backend/package.json | 1 - frontend/Dockerfile | 6 ++- frontend/{ => docker}/entrypoint.sh | 2 + .../nginx-mempool.conf} | 8 ++-- .../{nginx-docker.conf => docker/nginx.conf} | 0 frontend/{ => docker}/wait-for | 0 11 files changed, 14 insertions(+), 46 deletions(-) rename backend/{ => docker}/master (100%) rename backend/{ => docker}/start.sh (100%) rename backend/{ => docker}/wait-for-it.sh (100%) delete mode 100644 backend/mempool-config-docker.json rename frontend/{ => docker}/entrypoint.sh (53%) rename frontend/{nginx-mempool-docker.conf => docker/nginx-mempool.conf} (80%) rename frontend/{nginx-docker.conf => docker/nginx.conf} (100%) rename frontend/{ => docker}/wait-for (100%) diff --git a/backend/Dockerfile b/backend/Dockerfile index 88a0b8272..f323a456f 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -2,13 +2,16 @@ FROM node:12-buster-slim AS builder WORKDIR /build COPY . . + RUN sed -i "s!../.git/refs/heads/master!master!g" ./src/api/backend-info.ts + RUN apt-get update RUN apt-get install -y build-essential python3 pkg-config RUN npm ci --production RUN npm i typescript RUN npm run build -RUN mv mempool-config-docker.json mempool-config.json + +RUN mv ./docker/* . FROM node:12-buster-slim diff --git a/backend/master b/backend/docker/master similarity index 100% rename from backend/master rename to backend/docker/master diff --git a/backend/start.sh b/backend/docker/start.sh similarity index 100% rename from backend/start.sh rename to backend/docker/start.sh diff --git a/backend/wait-for-it.sh b/backend/docker/wait-for-it.sh similarity index 100% rename from backend/wait-for-it.sh rename to backend/docker/wait-for-it.sh diff --git a/backend/mempool-config-docker.json b/backend/mempool-config-docker.json deleted file mode 100644 index 3bd9d64a0..000000000 --- a/backend/mempool-config-docker.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "MEMPOOL": { - "NETWORK": "mainnet", - "BACKEND": "electrum", - "HTTP_PORT": __MEMPOOL_BACKEND_MAINNET_HTTP_PORT__, - "SPAWN_CLUSTER_PROCS": 0, - "API_URL_PREFIX": "/api/v1/", - "POLL_RATE_MS": 2000, - "CACHE_DIR": "__MEMPOOL_BACKEND_MAINNET_CACHE_DIR__" - }, - "CORE_RPC": { - "HOST": "__BITCOIN_MAINNET_RPC_HOST__", - "PORT": __BITCOIN_MAINNET_RPC_PORT__, - "USERNAME": "__BITCOIN_MAINNET_RPC_USER__", - "PASSWORD": "__BITCOIN_MAINNET_RPC_PASS__" - }, - "ELECTRUM": { - "HOST": "__ELECTRS_MAINNET_HTTP_HOST__", - "PORT": __ELECTRS_MAINNET_HTTP_PORT__, - "TLS_ENABLED": false, - "TX_LOOKUPS": true - }, - "ESPLORA": { - "REST_API_URL": "http://127.0.0.1:3000" - }, - "DATABASE": { - "ENABLED": true, - "HOST": "__MYSQL_HOST__", - "PORT": __MYSQL_PORT__, - "DATABASE": "mempool", - "USERNAME": "mempool", - "PASSWORD": "mempool" - }, - "STATISTICS": { - "ENABLED": true, - "TX_PER_SECOND_SAMPLE_PERIOD": 150 - } -} diff --git a/backend/package.json b/backend/package.json index 1c2907f44..1ce696cca 100644 --- a/backend/package.json +++ b/backend/package.json @@ -36,7 +36,6 @@ "locutus": "^2.0.12", "mysql2": "^1.6.1", "node-worker-threads-pool": "^1.4.2", - "typescript": "~3.9.7", "ws": "^7.3.1" }, "devDependencies": { diff --git a/frontend/Dockerfile b/frontend/Dockerfile index 5d7818008..e71cccf8c 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -7,6 +7,8 @@ RUN apt-get install -y build-essential rsync RUN npm i RUN npm run build +RUN mv ./docker/* . + FROM nginx:1.17.8-alpine WORKDIR /patch @@ -14,8 +16,8 @@ WORKDIR /patch COPY --from=builder /build/entrypoint.sh . COPY --from=builder /build/wait-for . COPY --from=builder /build/dist/mempool /var/www/mempool -COPY --from=builder /build/nginx-docker.conf /etc/nginx/nginx.conf -COPY --from=builder /build/nginx-mempool-docker.conf /etc/nginx/conf.d/nginx-mempool.conf +COPY --from=builder /build/nginx.conf /etc/nginx/ +COPY --from=builder /build/nginx-mempool.conf /etc/nginx/conf.d/ RUN chmod +x /patch/entrypoint.sh RUN chmod +x /patch/wait-for diff --git a/frontend/entrypoint.sh b/frontend/docker/entrypoint.sh similarity index 53% rename from frontend/entrypoint.sh rename to frontend/docker/entrypoint.sh index 7539f74b8..04085121b 100644 --- a/frontend/entrypoint.sh +++ b/frontend/docker/entrypoint.sh @@ -1,6 +1,8 @@ #!/bin/sh __MEMPOOL_BACKEND_MAINNET_HTTP_HOST__=${BACKEND_MAINNET_HTTP_HOST:=127.0.0.1} +__MEMPOOL_BACKEND_MAINNET_HTTP_PORT__=${BACKEND_MAINNET_HTTP_PORT:=8999} sed -i "s/__MEMPOOL_BACKEND_MAINNET_HTTP_HOST__/${__MEMPOOL_BACKEND_MAINNET_HTTP_HOST__}/g" /etc/nginx/conf.d/nginx-mempool.conf +sed -i "s/__MEMPOOL_BACKEND_MAINNET_HTTP_PORT__/${__MEMPOOL_BACKEND_MAINNET_HTTP_PORT__}/g" /etc/nginx/conf.d/nginx-mempool.conf exec "$@" diff --git a/frontend/nginx-mempool-docker.conf b/frontend/docker/nginx-mempool.conf similarity index 80% rename from frontend/nginx-mempool-docker.conf rename to frontend/docker/nginx-mempool.conf index e32234e39..5fb0b46e0 100644 --- a/frontend/nginx-mempool-docker.conf +++ b/frontend/docker/nginx-mempool.conf @@ -41,21 +41,21 @@ proxy_pass https://mempool.space; } location /api/v1/ws { - proxy_pass http://__MEMPOOL_BACKEND_MAINNET_HTTP_HOST__:8999/; + proxy_pass http://__MEMPOOL_BACKEND_MAINNET_HTTP_HOST__:__MEMPOOL_BACKEND_MAINNET_HTTP_PORT__/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; } location /api/v1 { - proxy_pass http://__MEMPOOL_BACKEND_MAINNET_HTTP_HOST__:8999/api/v1; + proxy_pass http://__MEMPOOL_BACKEND_MAINNET_HTTP_HOST__:__MEMPOOL_BACKEND_MAINNET_HTTP_PORT__/api/v1; } location /api/ { - proxy_pass http://__MEMPOOL_BACKEND_MAINNET_HTTP_HOST__:8999/api/v1/; + proxy_pass http://__MEMPOOL_BACKEND_MAINNET_HTTP_HOST__:__MEMPOOL_BACKEND_MAINNET_HTTP_PORT__/api/v1/; } # mainnet API location /ws { - proxy_pass http://__MEMPOOL_BACKEND_MAINNET_HTTP_HOST__:8999/; + proxy_pass http://__MEMPOOL_BACKEND_MAINNET_HTTP_HOST__:__MEMPOOL_BACKEND_MAINNET_HTTP_PORT__/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; diff --git a/frontend/nginx-docker.conf b/frontend/docker/nginx.conf similarity index 100% rename from frontend/nginx-docker.conf rename to frontend/docker/nginx.conf diff --git a/frontend/wait-for b/frontend/docker/wait-for similarity index 100% rename from frontend/wait-for rename to frontend/docker/wait-for