我是社区的新手,我是 docker 世界的新手。我必须通过 docker 虚拟化 leshan 服务器,并且必须使用 leshan 提供的选项“--redis”来执行此操作。所以我决定从 docker hub 获取一个 dockerfile 并修改最后一个“CMD”操作添加选项“--redis”。图像构建成功,但是当我尝试在容器中运行图像时,错误是“无效或损坏的 jarfile”。这个问题在没有选项“--redis”的情况下也会出现(没有修改dockerfile)。奇怪的是,如果我从 dockerhub 中提取图像并通过相同的 dockerfile 运行服务器构建,它就可以工作!
这是泊坞窗文件:
FROM linarotechnologies/alpine:edge
RUN apk add --no-cache openjdk8-jre-base ca-certificates shadow curl
runit
RUN mkdir -p /opt/leshan-server-demo && \
curl -o /opt/leshan-server-demo/leshan-server-demo.jar \
https://hudson.eclipse.org/leshan/job/leshan/lastSuccessfulBuild/artifact/leshan-server-demo.jar
RUN useradd -r -d /opt/leshan-server-demo -s /sbin/nologin -U leshan
CMD cd /tmp && chpst -u leshan java -jar /opt/leshan-server-demo/leshan-server-demo.jar $LESHAN_ARGS
这是构建:
Sending build context to Docker daemon 7.294MB
Step 1/5 : FROM linarotechnologies/alpine:edge
---> 7463224280b0
Step 2/5 : RUN apk add --no-cache openjdk8-jre-base ca-certificates shadow curl runit
---> Using cache
---> ebe6e6280cdf
Step 3/5 : RUN mkdir -p /opt/leshan-server-demo && curl -o /opt/leshan-server-demo/leshan-server-demo.jar https://hudson.eclipse.org/leshan/job/leshan/lastSuccessfulBuild/artifact/leshan-server-demo.jar
---> Using cache
---> 52b61160e8c5
Step 4/5 : RUN useradd -r -d /opt/leshan-server-demo -s /sbin/nologin -U leshan
---> Using cache
---> 53419af60e36
Step 5/5 : CMD cd /tmp && chpst -u leshan java -jar /opt/leshan-server-demo/leshan-server-demo.jar $LESHAN_ARGS#
---> Running in 52cb5fc95ffb
Removing intermediate container 52cb5fc95ffb
---> 68acab7c306e
Successfully built 68acab7c306e
Successfully tagged leshan-server:latest
这是我运行时的错误:
sudo docker run --rm -ti --name leshan-server leshan-server Error: Invalid or corrupt jarfile /opt/leshan-server-demo/leshan-server-demo.jar
有任何想法吗?谢谢你的帮助!