银川龙龙 | 构建WeBASE-Front的Docker镜像的图文教程¶
1、编译代码修改配置¶
按照 交易部署说明(链接https://webasedoc.readthedocs.io/zh_CN/latest/docs/WeBASE-Front/install.html)完成到第4步,主要需要修改的是“//连接节点的监听ip” 和 “//配置所连节点的绝对路径,用于监控节点配置与日志” 这两个配置,确保地址正确和可连接。
2、查看Dockerfile文件¶
进入到WeBASE-Front\docker\build目录,查看Dockerfile文件
vim Dockerfile
内容如下:
FROM ubuntu:18.04 as prod
#RUN apk --no-cache add bash curl wget
RUN apt-get update \
&& apt-get -y install openjdk-8-jre \
&& rm -rf /var/lib/apt/lists/*
COPY gradle /dist/gradle
COPY static /dist/static
COPY lib /dist/lib
COPY conf_template /dist/conf
COPY apps /dist/apps
# run with 'sdk' volume
RUN mkdir -p /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 cp -r /dist/sdk/* /dist/conf/ && 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}
这个镜像在运行到容器的时候,会报下面这个错误
cp: cannot stat '/dist/sdk/*': No such file or directory
所以对这个Dockerfile文件进行一下修改。
3、修改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}
4、创建镜像¶
复制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
5、运行镜像到容器¶
首先要启动好 运行命令:
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