摘自Spring Microservices in Action书:我正在尝试使用Docker Maven Plugin构建Docker映像,以将Java微服务作为Docker容器部署到云中。
Dockerfile:
np.resize
与Dockerfile中的第4步相关的输出:
In [82]: arr = np.arange(12).reshape(3,4) In [83]: np.resize(arr,(6,4)) Out[83]: array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]])
为什么我会得到 resize
当我尝试构建图像时?
答案 0 :(得分:3)
您的jce_policy-8.zip
存档可能被ADD
指令识别为压缩存档并进行了扩展。如果是这样,您可以跳过下一行的解压缩。或者,切换到COPY
指令,该指令不对本地档案进行特殊处理。
通常,我建议始终使用COPY
指令从构建上下文中引入文件和目录。仅在特别需要额外的拆箱行为时使用ADD
。
答案 1 :(得分:2)
FROM openjdk:8-jdk-alpine
RUN apk update && apk upgrade && apk add netcat-openbsd && apk add curl
RUN mkdir -p /usr/local/configserver
RUN cd /tmp/ && \
**curl -L -b "oraclelicense=a" http://download.oracle.com/otn-pub/java/jce/8/jce_policy-8.zip -O** && \
unzip jce_policy-8.zip && \
rm jce_policy-8.zip && \
yes |cp -v /tmp/UnlimitedJCEPolicyJDK8/*.jar /usr/lib/jvm/java-1.8-openjdk/jre/lib/security/
ADD @project.build.finalName@.jar /usr/local/configserver/
ADD run.sh run.sh
RUN chmod +x run.sh
CMD ./run.sh
答案 2 :(得分:1)
以某种方式,下载jce zip文件时,alpine linux发行版上的curl无法正确设置cookie标头。似乎它下载了一个zip文件,但实际上它是一个html错误页面。如果您查看该文件,则可以看到它是一个html文件。我用wget代替curl,它成功下载了文件。然后解压缩操作按预期进行。
FROM openjdk:8-jdk-alpine
RUN apk update && apk upgrade && apk add netcat-openbsd
RUN mkdir -p /usr/local/configserver
RUN cd /tmp/ && \
wget 'http://download.oracle.com/otn-pub/java/jce/8/jce_policy-8.zip' --header "Cookie: oraclelicense=accept-securebackup-cookie" && \
unzip jce_policy-8.zip && \
rm jce_policy-8.zip && \
yes |cp -v /tmp/UnlimitedJCEPolicyJDK8/*.jar /usr/lib/jvm/java-1.8-openjdk/jre/lib/security/
ADD @project.build.finalName@.jar /usr/local/configserver/
ADD run.sh run.sh
RUN chmod +x run.sh
CMD ./run.sh
答案 3 :(得分:0)
也许与以下事实有关:Alpine中的static async register(req, res) {
try {
const userFromBody = req.body
let errors = {}
if (userFromBody && userFromBody.password.length < 8) {
errors.password = "Your password must be at least 8 characters."
}
if (userFromBody && userFromBody.name.length < 3) {
errors.name = "You must specify a name of at least 3 characters."
}
if (Object.keys(errors).length > 0) {
res.status(400).json(errors)
return
}
命令是由busybox提供的,而不是标准的解压缩工具。
Busybox确实存在与此错误相关的错误: https://bugs.busybox.net/show_bug.cgi?id=8821
这是一个相关的问题,具有更多详细信息: https://github.com/wahern/luaossl/issues/103
作为解决方法,应该安装标准unzip
命令。