2017-08-04 85 views
1

這是該項目的文件夾結構如何運行在泊塢窗容器薄罐子

pom.xml 
Dockerfile 
src/ 
    main/java/com/example/*.java 
    test/java/com/example/*.java 
etc/ 
    config.properties 
    args.params 
target/ 
    app.jar 
    app.tar.gz 
    libs/ 
     //contains dependent jars 
    classes/ 
     //contains compiled classes 

應用程序使用此命令正常執行:

java -Djava.net.preferIPv4Stack=true -Dconfig.dir=./etc -Dlogback.configurationFile=./etc/log.xml -jar app.jar 

我寫了這個dockerfile運行罐子在泊塢窗:

FROM java:8 
EXPOSE 6078 
COPY target//
ADD target/app.tar.gz/
ENTRYPOINT ["java", "-cp", "target/app.jar:target/app/libs/*:", "com.example.MainClass"] 
CMD ["`cat etc/args.params`","-Dlogback.configurationFile=./etc/log/xml"] 

但是當我運行的泊塢窗:

docker build -t app . 
docker run app  

我收到以下錯誤:

Error: Could not find or load main class com.example.MainClass 

我缺少什麼?

回答

1

評估不適用於Docker命令。這樣

FROM ubuntu:16.04 
CMD ["echo","My name is Tarun", "`date`"] 

這將ouptut

My name is Tarun `date` 

但是,如果我改變我的Dockerfile

FROM ubuntu:16.04 

CMD /bin/bash -c "echo My name is Tarun `date`" 

然後你會得到正確的輸出。所以你需要使用/bin/bash -c "<full command>"來執行你的命令。請注意,最後一個參數全部作爲單個參數進入。在陣列形式它將是

CMD ["/bin/bash","-c", "echo My name is Tarun `date`"] 
0

您的工件不在/target/但在根目錄中。

請參閱dockerfile document

在Dockerfile中查找錯誤的最簡單方法是運行容器,只需打開shell並在shell中執行所需操作。你可以像下面這樣做。

docker run -it --entrypoint=bash app