拉取 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
复制代码