1
我試圖構建一個dockerfile。我早些時候嘗試使用硬編碼路徑爲我的項目和輸出是好的。但是,只要我開始使用變量,java代碼就停止執行。無法在Docker入口點命令中使用變量
Dockerfile
FROM java:7
EXPOSE 7100
ARG version
ENV version=$version
RUN echo $version
RUN mkdir -p /cacheDir/services/live/prediction/p7100/$version/logs
RUN ls -tlr /cacheDir/services/live/prediction/p7100/
RUN mkdir -p /cacheDir/services/releases/prediction/p7100/$version/
RUN mkdir -p /cacheDir/services/predictionmodel
ADD target/predictionDependencies/star /cacheDir/services/predictionmodel/ #star here is the operator (*), it was being interpret as comments by this stackoverflow editor.
ADD /target/prediction-0.0.13-SNAPSHOT.jar /cacheDir/services/releases/prediction/p7100/$version/prediction-0.0.13-SNAPSHOT.jar
ADD /target/instance.properties /cacheDir/services/releases/prediction/p7100/$version/instance.properties
ADD /target/logback.xml /cacheDir/services/releases/prediction/p7100/$version/logback.xml
RUN ls -ltr /cacheDir/services/live/prediction/p7100/$version/
RUN ls -ltr /cacheDir/services/releases/prediction/p7100/$version/
RUN ls -ltr /cacheDir/services/predictionmodel
ENTRYPOINT java -server -Xmx2g -Xloggc:/cacheDir/services/live/prediction/p7100/$version/logs/gc.log -verbose:gc -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/cacheDir/services/live/prediction/p7100/$version/oom.dump -Dlogback.configurationFile=/cacheDir/services/releases/prediction/p7100/$version/logback.xml -Dlog.home=/cacheDir/services/live/prediction/p7100/$version/logs -Dlogback.debug=true -Dbroker.l^Ct=sv-kafka6.pv.sv.nextag.com:9092,sv-kafka7.pv.sv.nextag.com:9092,sv-kafka8.pv.sv.nextag.com:9092,sv-kafka9.pv.sv.nextag.com:9092 -jar /cacheDir/services/releases/prediction/p7100/$version/prediction-0.0.13-SNAPSHOT.jar 7100 /cacheDir/services/releases/prediction/p7100/$version/instance.properties /com/wizecommerce/services/qa &
命令用來構建圖像。
docker build --build-arg version=0.0.14-SNAPSHOT -t prediction:0.0.14-SNAPSHOT .
該圖像似乎是成功的。但是,當我運行該命令時,容器就會自行退出。使用的運行命令:
docker run -p 7100:7100 -v ~/PredictionVolume/logs/:/cacheDir/services/live/prediction/p7100/0.0.14-SNAPSHOT/logs/ -t prediction:0.0.14-SNAPSHOT
而當試圖查看正在運行的容器時,它未運行。
我試着用這兩種解決方案工作,但我沒有找到任何解決方案。
How do I use Docker environment variable in ENTRYPOINT array?
其他解決方案是我用替換下面的入口點的命令與這一個。
ENTRYPOINT ["sh","-c","java","-server","-Xmx2g","-Xloggc:/cacheDir/services/live/prediction/p7100/${version}/logs/gc.log","-verbose:gc","-XX:+PrintGCDateStamps","-XX:+PrintGCDetails","-XX:+HeapDumpOnOutOfMemoryError","-XX:HeapDumpPath=/cacheDir/services/live/prediction/p7100/${version}/oom.dump","-Dlogback.configurationFile=/cacheDir/services/releases/prediction/p7100/${version}/logback.xml","-Dlog.home=/cacheDir/services/live/prediction/p7100/${version}/logs","-Dlogback.debug=true","-Dbroker.l^Ct=sv-kafka6.pv.sv.nextag.com:9092,sv-kafka7.pv.sv.nextag.com:9092,sv-kafka8.pv.sv.nextag.com:9092,sv-kafka9.pv.sv.nextag.com:9092","-jar","/cacheDir/services/releases/prediction/p7100/${version}/prediction-0.0.13-SNAPSHOT.jar","7100","/cacheDir/services/releases/prediction/p7100/${version}/instance.properties","/com/wizecommerce/services/qa","&"]
但隨着該命令的輸出來等,如果鍵入顯示所有可用使用的選項的終端上的java將在屏幕(終端)上顯示。
任何人都可以請建議出路嗎? 謝謝!
非常感謝,@ jonathon-reinhart。我非常感謝它,特別是對於重點的解釋。它工作得很好。 –