Docker 執行 jar

sweetmain發表於2018-01-12

拉取 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
複製程式碼

相關文章