如何运行在泊坞窗容器薄罐子
问题描述:
这是该项目的文件夹结构如何运行在泊坞窗容器薄罐子
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中查找错误的最简单方法是运行容器,只需打开shell并在shell中执行所需操作。你可以像下面这样做。
docker run -it --entrypoint=bash app