Докер: проблема с запуском файла jar в докере
Я новичок в сообществе, и я новичок в мире докеров. Мне нужно виртуализировать сервер leshan через докер, и я должен сделать это с опцией "--redis", которую leshan делает доступной. поэтому я решил взять файл докеров из концентратора докеров и изменить последнюю операцию "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
Есть идеи? Спасибо за помощь!
2 ответа
https://hudson.eclipse.org/leshan/job/leshan/lastSuccessfulBuild/artifact/leshan-server-demo.jar
Этот URL-адрес имеет перенаправление с 302. Вы должны использовать параметр -L с curl, чтобы перейти по ссылке.
~# curl -o test.jar https://hudson.eclipse.org/leshan/job/leshan/lastSuccessfulBuild/artifact/leshan-server-demo.jar
~# cat leshan-server-demo.jar
<html>
<head><title>302 Found</title></head>
<body>
<center><h1>302 Found</h1></center>
<hr><center>nginx</center>
</body>
</html>
curl загружает страницу перенаправления html.
Вы можете указать curl следовать перенаправлениям, используя -L
вариант.
/opt/leshan-server-demo # curl -L -o test.jar https://hudson.eclipse.org/leshan/job/leshan/lastSuccessfulBuild/artifact/leshan-server-demo.
jar
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 138 100 138 0 0 316 0 --:--:-- --:--:-- --:--:-- 315
100 7618k 100 7618k 0 0 622k 0 0:00:12 0:00:12 --:--:-- 481k
/opt/leshan-server-demo #