Adding production and deployment files.
This commit is contained in:
parent
3453e84889
commit
c8c1be594b
62
Dockerfile
Normal file
62
Dockerfile
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
FROM alpine:latest
|
||||||
|
|
||||||
|
RUN mkdir /mempool.space/
|
||||||
|
COPY ./backend /mempool.space/backend/
|
||||||
|
COPY ./frontend /mempool.space/frontend/
|
||||||
|
COPY ./mariadb-structure.sql /mempool.space/mariadb-structure.sql
|
||||||
|
#COPY ./nginx.conf /mempool.space/nginx.conf
|
||||||
|
|
||||||
|
RUN apk add mariadb mariadb-client jq git nginx npm rsync
|
||||||
|
|
||||||
|
RUN mysql_install_db --user=mysql --datadir=/var/lib/mysql/
|
||||||
|
RUN /usr/bin/mysqld_safe --datadir='/var/lib/mysql/'& \
|
||||||
|
sleep 60 && \
|
||||||
|
mysql -e "create database mempool" && \
|
||||||
|
mysql -e "grant all privileges on mempool.* to 'mempool'@'localhost' identified by 'mempool'" && \
|
||||||
|
mysql mempool < /mempool.space/mariadb-structure.sql
|
||||||
|
RUN sed -i "/^skip-networking/ c#skip-networking" /etc/my.cnf.d/mariadb-server.cnf
|
||||||
|
|
||||||
|
RUN export NG_CLI_ANALYTICS=ci && \
|
||||||
|
npm install -g typescript && \
|
||||||
|
cd /mempool.space/frontend && \
|
||||||
|
npm install && \
|
||||||
|
cd /mempool.space/backend && \
|
||||||
|
npm install && \
|
||||||
|
tsc
|
||||||
|
|
||||||
|
COPY ./nginx-nossl-docker.conf /etc/nginx/nginx.conf
|
||||||
|
|
||||||
|
ENV ENV dev
|
||||||
|
ENV DB_HOST localhost
|
||||||
|
ENV DB_PORT 3306
|
||||||
|
ENV DB_USER mempool
|
||||||
|
ENV DB_PASSWORD mempool
|
||||||
|
ENV DB_DATABASE mempool
|
||||||
|
ENV HTTP_PORT 80
|
||||||
|
ENV API_ENDPOINT /api/v1/
|
||||||
|
ENV CHAT_SSL_ENABLED false
|
||||||
|
#ENV CHAT_SSL_PRIVKEY
|
||||||
|
#ENV CHAT_SSL_CERT
|
||||||
|
#ENV CHAT_SSL_CHAIN
|
||||||
|
ENV MEMPOOL_REFRESH_RATE_MS 500
|
||||||
|
ENV INITIAL_BLOCK_AMOUNT 8
|
||||||
|
ENV DEFAULT_PROJECTED_BLOCKS_AMOUNT 3
|
||||||
|
ENV KEEP_BLOCK_AMOUNT 24
|
||||||
|
ENV BITCOIN_NODE_HOST bitcoinhost
|
||||||
|
ENV BITCOIN_NODE_PORT 8332
|
||||||
|
ENV BITCOIN_NODE_USER bitcoinuser
|
||||||
|
ENV BITCOIN_NODE_PASS bitcoinpass
|
||||||
|
ENV TX_PER_SECOND_SPAN_SECONDS 150
|
||||||
|
|
||||||
|
#RUN echo "mysqld_safe& sleep 20 && cd /mempool.space/backend && rm -f mempool-config.json && rm -f cache.json && touch cache.json && jq -n env > mempool-config.json && node dist/index.js" > /entrypoint.sh
|
||||||
|
|
||||||
|
RUN cd /mempool.space/frontend/ && \
|
||||||
|
npm run build && \
|
||||||
|
rsync -av --delete dist/mempool/ /var/www/html/
|
||||||
|
|
||||||
|
EXPOSE 80
|
||||||
|
|
||||||
|
COPY ./entrypoint.sh /mempool.space/entrypoint.sh
|
||||||
|
RUN chmod +x /mempool.space/entrypoint.sh
|
||||||
|
WORKDIR /mempool.space
|
||||||
|
CMD ["/mempool.space/entrypoint.sh"]
|
10
entrypoint.sh
Normal file
10
entrypoint.sh
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
mysqld_safe&
|
||||||
|
sleep 5
|
||||||
|
nginx
|
||||||
|
cd /mempool.space/backend
|
||||||
|
rm -f mempool-config.json
|
||||||
|
rm -f cache.json
|
||||||
|
touch cache.json
|
||||||
|
jq -n env > mempool-config.json
|
||||||
|
node dist/index.js
|
73
mariadb-structure.sql
Normal file
73
mariadb-structure.sql
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
|
||||||
|
SET time_zone = "+00:00";
|
||||||
|
|
||||||
|
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;
|
60
nginx-nossl-docker.conf
Normal file
60
nginx-nossl-docker.conf
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
user root;
|
||||||
|
worker_processes auto;
|
||||||
|
pid /run/nginx.pid;
|
||||||
|
include /etc/nginx/modules-enabled/*.conf;
|
||||||
|
|
||||||
|
events {
|
||||||
|
worker_connections 768;
|
||||||
|
# multi_accept on;
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
sendfile on;
|
||||||
|
tcp_nopush on;
|
||||||
|
tcp_nodelay on;
|
||||||
|
keepalive_timeout 65;
|
||||||
|
types_hash_max_size 2048;
|
||||||
|
|
||||||
|
include /etc/nginx/mime.types;
|
||||||
|
default_type application/octet-stream;
|
||||||
|
|
||||||
|
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
|
||||||
|
ssl_prefer_server_ciphers on;
|
||||||
|
|
||||||
|
access_log /var/log/nginx/access.log;
|
||||||
|
error_log /var/log/nginx/error.log;
|
||||||
|
|
||||||
|
gzip on;
|
||||||
|
gzip_comp_level 5;
|
||||||
|
gzip_min_length 256;
|
||||||
|
gzip_proxied any;
|
||||||
|
gzip_vary on;
|
||||||
|
|
||||||
|
gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject 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 text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy; # text/html is always compressed by gzip module
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
listen [::]:80;
|
||||||
|
server_name docker.lan;
|
||||||
|
|
||||||
|
root /var/www/html;
|
||||||
|
|
||||||
|
index index.html;
|
||||||
|
server_name example.com; # managed by Certbot
|
||||||
|
|
||||||
|
location / {
|
||||||
|
try_files $uri $uri/ /index.html =404;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /api {
|
||||||
|
proxy_pass http://127.0.0.1:8999/api;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /ws {
|
||||||
|
proxy_pass http://127.0.0.1:8999/;
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection "Upgrade";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
75
nginx.conf
Normal file
75
nginx.conf
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
user www-data;
|
||||||
|
worker_processes auto;
|
||||||
|
pid /run/nginx.pid;
|
||||||
|
include /etc/nginx/modules-enabled/*.conf;
|
||||||
|
|
||||||
|
events {
|
||||||
|
worker_connections 768;
|
||||||
|
# multi_accept on;
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
sendfile on;
|
||||||
|
tcp_nopush on;
|
||||||
|
tcp_nodelay on;
|
||||||
|
keepalive_timeout 300s;
|
||||||
|
types_hash_max_size 2048;
|
||||||
|
|
||||||
|
include /etc/nginx/mime.types;
|
||||||
|
default_type application/octet-stream;
|
||||||
|
|
||||||
|
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
|
||||||
|
ssl_prefer_server_ciphers on;
|
||||||
|
|
||||||
|
access_log /var/log/nginx/access.log;
|
||||||
|
error_log /var/log/nginx/error.log;
|
||||||
|
|
||||||
|
gzip on;
|
||||||
|
gzip_comp_level 5;
|
||||||
|
gzip_min_length 256;
|
||||||
|
gzip_proxied any;
|
||||||
|
gzip_vary on;
|
||||||
|
|
||||||
|
gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject 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 text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy; # text/html is always compressed by gzip module
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
listen [::]:80;
|
||||||
|
server_name example.com;
|
||||||
|
|
||||||
|
if ($host = example.com) {
|
||||||
|
return 301 https://$host$request_uri;
|
||||||
|
} # managed by Certbot
|
||||||
|
|
||||||
|
return 404; # managed by Certbot
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen [::]:443 ssl http2; # managed by Certbot
|
||||||
|
listen 443 ssl http2; # managed by Certbot
|
||||||
|
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
|
||||||
|
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
|
||||||
|
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
|
||||||
|
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
|
||||||
|
|
||||||
|
server_name example.com; # managed by Certbot
|
||||||
|
|
||||||
|
index index.html;
|
||||||
|
root /var/www/html;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
try_files $uri $uri/ /index.html =404;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /api {
|
||||||
|
proxy_pass http://127.0.0.1:8999/api;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /ws {
|
||||||
|
proxy_pass http://127.0.0.1:8999/;
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection "Upgrade";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user