docker部署fisco-bcos-browser区块链浏览器

一、fisco-bcos-browser源码下载
git 克隆源码到本地
https://github.com/FISCO-BCOS/fisco-bcos-browser
下载后的源码,其中server为后端服务,web为前端服务

目录

二、编译源码
把后端server源码导入到idea中,gradle-build源码,生成后端dist文件
执行前端目录下get_solc_js.sh文件,会自动下载solc-bin,下面v0.4.25.js等文件,执行完后检查dist/static/js是否下载完这些js文件,get_solc_js.sh文件如下。get_solc_js中的路径合约js无法正常下载,若需要请私信我获取。


get_solc_js.sh下载的js
image.png
打包

三、创建docker容器部署目录结构
如下图所示,其中db存放sql文件,server存放后端编译后的dist文件和挂载的application.yml文件,web存放前端dist文件和挂载的nginx配置文件。
数据库脚本和前端dist文件源码中都有。


目录

数据库脚本

后端文件

前端文件

四、编写后端服务dockerfile文件

FROM gradle:jdk8

MAINTAINER wenjinwei

LABEL Version="2.0"
LABEL Name="fisco-bcos-browser 2.0"
LABEL Description="Oracle Jre 8 + gradle 5.2.1"

# python package
RUN sed -i 's/archive.ubuntu.com/mirrors.cloud.tencent.com/g' /etc/apt/sources.list \
    && sed -i 's/security.ubuntu.com/mirrors.cloud.tencent.com/g' /etc/apt/sources.list \
    && apt-get update \
    && apt-get install -y python3-pip \
    && pip3 install PyMySQL

WORKDIR /fisco-bcos-browser/server/fisco-bcos-browser
COPY dist /fisco-bcos-browser/server/fisco-bcos-browser/dist
RUN cp dist/conf_template dist/conf -r
WORKDIR /fisco-bcos-browser/server/fisco-bcos-browser/dist/

RUN chmod +x ./start.sh

CMD ["sh", "start.sh"]

server: 
  port: 5101
  context-path: /fisco-bcos-browser

spring: 
  datasource: 
    url: jdbc:mysql://fbb-mysql:3306/db_browser?useUnicode=true&characterEncoding=utf8
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
  
mybatis:  
  mapper-locations: classpath:mapper/*.xml  

constant: 
  cronBlockChainInfo: 0/10 * * * * ?
  cronBlockInfo: 0/10 * * * * ?
  cronTxnByDay: 30 0/1 * * * ?
  cronAyncNode: 0 0/10 * * * ?
  cronIfNodeActive: 0 0/1 * * * ?
  cronDeleteTxn: 0 0/10 * * * ?
  handleBlocks: 50
  keepTxnCnt: 500000
  
logging: 
  config: classpath:log4j2.xml

五、编写前端服务dockerfile文件

FROM nginx:1.15.9-alpine

MAINTAINER wenjinwei

# 创建目录
RUN mkdir -p /data/app/web/

# 将本地的 dist 文件夹复制到容器的 /data/app/web/dist/ 目录下
COPY dist /data/app/web/dist/

# 设置工作目录
WORKDIR /data/app/web

# 可选:配置 Nginx
# COPY nginx.conf /etc/nginx/nginx.conf

# 暴露端口
EXPOSE 80

# 启动 Nginx
CMD ["nginx", "-g", "daemon off;"]
#user  nobody;
worker_processes  1;

error_log   /var/log/nginx/error.log warn;
pid         /var/run/nginx.pid;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log ;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
    add_header X-Frame-Options SAMEORIGIN;
server {
        listen       5100 default_server;
        server_name  127.0.0.1;
        location / {    
            root    /data/app/web/dist;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html =404;
        }

        include /etc/nginx/default.d/*.conf;

        location /api {
                        proxy_pass    http://fbb_back:5101/;
                        proxy_set_header                Host                            $host;
                        proxy_set_header                X-Real-IP                       $remote_addr;
                        proxy_set_header                X-Forwarded-For         $proxy_add_x_forwarded_for;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
}

六、编写dockerCompose文件

version: '3'

services:
  fbb-mysql:
    image: mysql:5.6
    container_name: fbb-mysql
    restart: always
    privileged: true
    ports:
      - "23306:3306"
    environment:
      - TZ=Asia/Shanghai
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_USER=dbUsername
      - MYSQL_PASSWORD=dbPassword
      - MYSQL_DATABASE=db_browser
    volumes:
      - ./db:/docker-entrypoint-initdb.d
    command: --lower_case_table_names=1 --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --default-authentication-plugin=mysql_native_password

  fbb_back:
    container_name: fbb-back
    build: ./server/.
    volumes:
      - ./server/application.yml:/fisco-bcos-browser/server/fisco-bcos-browser/dist/conf/application.yml:ro
    depends_on:
      - fbb-mysql
    command: sh -c "./start.sh && tail -f log/*"

  fbb_front:
    container_name: fbb-front
    build: ./web/.
    volumes: 
      - ./web/nginx.conf:/etc/nginx/nginx.conf:ro
    ports:
      - "5100:5100"
    depends_on:
      - fbb_back
    command: ["nginx-debug", "-g", "daemon off;"]

七、启动服务

docker-compose up -d

访问htpp://ip:5100

正常启动

八、新增群组
执行rpc命令查看群组ID

[root@bogon 192.168.122.101]# curl -X POST --data '{"jsonrpc":"2.0","method":"getGroupList","params":[],"id":1}' http://192.168.122.101:8545 
{"id":1,"jsonrpc":"2.0","result":[1,2]}

九、新增节点
查看各节点config.ini文件中所配置的IP、RPC端口和P2P端口


config.ini

新增后的节点信息
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容