Docker 运行 jar

1,580 阅读1分钟

拉取 Java 运行环境

docker pull hub.c.163.com/library/java:8

创建 Dockerfile 文件

FROM hub.c.163.com/library/java:8

# 定义变量
ENV VERTICLE_FILE vertx-kt-3.5.0-fat.jar
ENV VERTICLE_CONFIG config.json
ENV VERTICLE_HOME /usr/verticles
ENV VERTICLE_LOG /usr/verticles/logs

EXPOSE 8080

# 从主机 copy 到容器里面
COPY $VERTICLE_FILE $VERTICLE_HOME/
COPY $VERTICLE_CONFIG $VERTICLE_HOME/

WORKDIR $VERTICLE_HOME
ENTRYPOINT ["sh", "-c"]
CMD ["java -Dvertx.logger-delegate-factory-class-name=io.vertx.core.logging.Log4j2LogDelegateFactory -jar $VERTICLE_FILE -conf $VERTICLE_CONFIG"]

这里运行的是 Vert.x jar 所以命令行启动参数较长

build

docker build -t helloworld:1.0 .

注意后面有个 . 表示当前目录,相关 jar和配置文件都在当前目录下。

查看自己制作的镜像

docker images

运行镜像

 docker run -d -p 8080:8080 -v /root/demo/log:/usr/verticles/logs helloworld:1.0
  • -v 后面表示映射文件路径 : 前面表示本机路径,后面表示容器内的路径
  • -d 表示在后台运行
  • -p 表示端口映射

遇到的问题

日志打印出的时间不对,需要在运行的时候加一个参数就可以了

docker run -d -p 8080:8080 -v /etc/localtime:/etc/localtime:ro -v /root/demo/log:/usr/verticles/logs helloworld:1.0