部署教程 | 使用Docker部署WeBASE-Front服务

1、配置镜像源

创建或修改 /etc/docker/daemon.json 文件,内容如下:

{
    "registry-mirrors": [
        "http://hub-mirror.c.163.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://registry.docker-cn.com"
    ]
}

重启docker服务:

service docker restart

2、拉取webase-front镜像

拉取命令:

docker pull webasepro/webase-front

执行结果:

Using default tag: latest
latest: Pulling from webasepro/webase-front
25fa05cd42bd: Pull complete 
a67ba6b28d8a: Pull complete 
4bdf98e06c11: Pull complete 
2d85efc5eaf2: Pull complete 
a667039d379f: Pull complete 
dbe9e6d88803: Pull complete 
4581dee6fb48: Pull complete 
36449df65590: Pull complete 
Digest: sha256:126eee0f940d3ea9e08150a9896c57648d8eb8bab9eb4efd90930c4ec8ad5423
Status: Downloaded newer image for webasepro/webase-front:latest
docker.io/webasepro/webase-front:latest

查看拉取的镜像:

docker images
REPOSITORY                                                  TAG       IMAGE ID       CREATED         SIZE
webasepro/webase-front                                      latest    a2d3effc01d9   12 months ago   610MB

3、运行镜像

执行命令:

docker run -d --name WeBASE-Front -v /docker_file/front/dist/log/:/dist/log -p 5002:5002 webasepro/webase-front:latest

查看容器状态:

docker ps -a
CONTAINER ID   IMAGE                           COMMAND                  CREATED          STATUS                      PORTS                                       NAMES
da20cddd5379   webasepro/webase-front:latest   "/bin/sh -c 'cp -r /…"   15 seconds ago   Exited (1) 14 seconds ago                                               WeBASE-Front

未启动成功,查看日志:

docker logs da20cddd5379

报以下错误:

cp: cannot stat '/dist/sdk/*': No such file or directory

4、自己构建镜像

(1)、编译代码修改配置

按照 交易部署说明(链接https://webasedoc.readthedocs.io/zh_CN/latest/docs/WeBASE-Front/install.html)完成到第4步,主要需要修改的是“//连接节点的监听ip” 和 “//配置所连节点的绝对路径,用于监控节点配置与日志” 这两个配置,确保地址正确和可连接。

(2)、修改Dockerfile文件

进入到WeBASE-Front\docker\build目录,修改Dockerfile文件,修改后内容如下:

FROM java:8

COPY gradle                /dist/gradle
COPY static                /dist/static
COPY lib                  /dist/lib
COPY conf                 /dist/conf
COPY apps                 /dist/apps
COPY sdk                  /dist/sdk

WORKDIR /dist
EXPOSE 5002

ENV CLASSPATH "/dist/conf/:/dist/apps/*:/dist/lib/*"

ENV JAVA_OPTS " -server -Dfile.encoding=UTF-8 -Xmx512m -Xms512m -Xmn256m -Xss512k -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/log/heap_error.log  -XX:+UseG1GC -XX:MaxGCPauseMillis=200 "
ENV APP_MAIN "com.webank.webase.front.Application"

# start commond
ENTRYPOINT   java ${JAVA_OPTS} -Djdk.tls.namedGroups="secp256k1", -Duser.timezone="Asia/Shanghai" -Djava.security.egd=file:/dev/./urandom, -Djava.library.path=/dist/conf -cp ${CLASSPATH}  ${APP_MAIN}

(3)、创建镜像

复制Dockerfile文件到编译后生成的dist目录中,执行创建命令:(注意最后有个点)

docker build -f Dockerfile -t webase-front:myself .

执行结果:

Sending build context to Docker daemon  360.5MB
Step 1/13 : FROM java:8
 ---> d23bdf5b1b1b
Step 2/13 : COPY gradle                /dist/gradle
 ---> Using cache
 ---> db29fdd4e5b9
Step 3/13 : COPY static                /dist/static
 ---> Using cache
 ---> 2c8800ea228a
Step 4/13 : COPY lib                  /dist/lib
 ---> Using cache
 ---> e54620dd3ad3
Step 5/13 : COPY conf                 /dist/conf
 ---> Using cache
 ---> 25725c474e73
Step 6/13 : COPY apps                 /dist/apps
 ---> Using cache
 ---> 60cdf4dd2645
Step 7/13 : COPY sdk                  /dist/sdk
 ---> Using cache
 ---> 19c44108d43a
Step 8/13 : WORKDIR /dist
 ---> Using cache
 ---> 2e00ce9b1744
Step 9/13 : EXPOSE 5002
 ---> Using cache
 ---> 56d3df58bdb1
Step 10/13 : ENV CLASSPATH "/dist/conf/:/dist/apps/*:/dist/lib/*"
 ---> Using cache
 ---> c2bd30292516
Step 11/13 : ENV JAVA_OPTS " -server -Dfile.encoding=UTF-8 -Xmx512m -Xms512m -Xmn256m -Xss512k -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/log/heap_error.log  -XX:+UseG1GC -XX:MaxGCPauseMillis=200 "
 ---> Using cache
 ---> aefde654d870
Step 12/13 : ENV APP_MAIN "com.webank.webase.front.Application"
 ---> Using cache
 ---> 856a7ec6c2ff
Step 13/13 : ENTRYPOINT   java ${JAVA_OPTS} -Djdk.tls.namedGroups="secp256k1", -Duser.timezone="Asia/Shanghai" -Djava.security.egd=file:/dev/./urandom, -Djava.library.path=/dist/conf -cp ${CLASSPATH}  ${APP_MAIN}
 ---> Using cache
 ---> 1631bbc9f2ac
Successfully built 1631bbc9f2ac
Successfully tagged webase-front:myself

查看镜像:

docker images
REPOSITORY                                                  TAG       IMAGE ID       CREATED         SIZE
webase-front                                                myself    1631bbc9f2ac   4 weeks ago     817MB

(4)、运行镜像到容器

运行命令:

docker run -d --name WeBASE-Front -v /docker_file/front/dist/log/:/dist/log -p 5002:5002 webase-front:myself

查看运行的容器:

docker ps
CONTAINER ID   IMAGE                 COMMAND                  CREATED         STATUS         PORTS                                       NAMES
04db2b9864e3   webase-front:myself   "/bin/sh -c 'java ${…"   3 seconds ago   Up 2 seconds   0.0.0.0:5002->5002/tcp, :::5002->5002/tcp   WeBASE-Front

查看日志:

tail -f log/WeBASE-Front.log
[main] INFO  Application() - Started Application in 18.893 seconds (JVM running for 19.618)
[main] INFO  Application() - main run success...

浏览器访问页面:http://IP地址:5002/WeBASE-Front