一、编写Dokcerfile

###FROM 指定该docker镜像运行环境(必须有此docker镜像,此处选择jdk:8)
FROM ubuntu_java8:v1
###将准备的配置文件添加到容器 (此处举例,可以将任意文件添加到docker中)
ADD antifraud-rule-0.0.1-SNAPSHOT.jar /antifraud/antifraud-rule-0.0.1-SNAPSHOT.jar
ADD config/ antifraud/config/
ADD db/ /antifraud/db/
###设置时区
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
  && echo 'Asia/Shanghai' >/etc/timezone \
RUN bash -c 'touch /antifraud/antifraud-rule-0.0.1-SNAPSHOT.jar'
# 设置工作目录
WORKDIR '/antifraud'
###ENTRYPOINT ["sh","-c"," ping 192.168.20.43"]
###容器启动命令
ENTRYPOINT ["sh","-c"," java -Duser.timezone=GMT+08 -jar /antifraud/antifraud-rule-0.0.1-SNAPSHOT.jar ${JAVA_OPTS}"]
###声明启动端口号
EXPOSE 8080

ENTRYPOINT
   ENTRYPOINT可以被 --entrypoint参数覆盖
EXPOSE 参数
  个人理解:EXPOSE 暴露的端口更像是指明了该容器提供的服务需要用到的端口
  EXPOSE 并不会直接将端口自动和宿主机某个端口建立映射关系
  如果 docker run,指定了自动映射 -P,那么会将所有暴露的端口随机映射到宿主机的高阶端口
  如果 docker run,指定了 --net=host 宿主机网络模式,容器中 EXPOSE 指令暴露的端口会直接使用宿主机对应的端口,不存在映射关系
  如果 EXPOSE 暴露的端口确定要和某个宿主机端口建立映射关系,还是要用到 docker run -p 参数
  EXPOSE 显式地标明镜像开放端口,一定程度上提供了操作的便利,也提高了 Dockerfile 的可读性和可维护性

二、制作docker镜像文件

## -t 镜像名称:镜像版本,. 表示使用当前目录下的Dockerfile文件
docker build -t test:0.1 .
## 查看镜像
docker images
## 导出镜像
docker save test:0.1 > test.tar

三、启动容器

## 使用镜像,加载
docker load < test.tar
## 运行镜像
sudo docker run -it -d -e "JAVA_OPTS=--graph.server.host=192.168.20.43" --net=host --name cmbc -p 8081:8081 cmbc_rgap:v1

其中 -e "JAVA_OPTS=–graph.server.host=192.168.20.43” 是传给执行的java -jar命令的,可以在此传参给java程序

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐