如何运行在泊坞窗容器薄罐子

问题描述:

这是该项目的文件夹结构如何运行在泊坞窗容器薄罐子

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 

我缺少什么?

评估不适用于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`"] 

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

请参阅dockerfile document

在Dockerfile中查找错误的最简单方法是运行容器,只需打开shell并在shell中执行所需操作。你可以像下面这样做。

docker run -it --entrypoint=bash app