我创建了一个 Docker 构建文件
FROM openjdk:8-jdk-alpine
它根据以下脚本安装 Tomcat:
https://github.com/terrestris/docker-tomcat
最后的步骤之一是将我的 War 解压到 /webapps 目录中,但是
docker build
在这一步失败了,并且没有指出 为什么
Docker日志的最后一部分是:
16.33 inflating: WEB-INF/lib/spring-web-6.0.13.jar
16.33 inflating: WEB-INF/lib/spring-security-web-6.1.5.jar
16.33 inflating: WEB-INF/lib/annotations-2.24.9.jar
16.33 inflating: WEB-INF/lib/log4j-api-2.20.0.jar
16.33 inflating: WEB-INF/lib/hibernate-core-6.2.13.Final.jar
16.33 inflating: WEB-INF/lib/spring-aspects-6.0.13.jar
16.33 inflating: WEB-INF/lib/json-utils-2.24.9.jar
16.33 creating: META-INF/maven/
16.33 creating: META-INF/maven/com.company/
16.33 creating: META-INF/maven/com.company/app/
16.33 inflating: META-INF/maven/com.company/app/pom.xml
16.33 inflating: META-INF/maven/com.company/app/pom.properties
16.33 inflating: WEB-INF/lib/spring-boot-jarmode-layertools-2.6.0.jar
16.33 inflating: WEB-INF/layers.idx
------
dockerfile:31
--------------------
29 | RUN mkdir /opt/apache-tomcat-8.5.37/webapps/ROOT
30 | ADD target/app-1.0-SNAPSHOT.war /tmp/my.war
31 | >>> RUN unzip /tmp/my.war -d /opt/apache-tomcat-8.5.37/webapps/ROOT
32 | RUN mkdir -p /usr/local/imageStore/img
33 |
--------------------
ERROR: failed to solve: process "/bin/sh -c unzip /tmp/my.war -d /opt/apache-tomcat-8.5.37/webapps/ROOT" did not complete successfully: exit code: 1
如何从这里诊断问题?
我会做以下事情:
在输出错误的命令之前,我会添加一个阻塞命令,例如
CMD ["tail", "-f", "/dev/null"]
然后使用命令 docker exec -it [container name] bash
在容器内执行,然后尝试执行 unzip 命令并查看它在容器中输出什么错误。
希望这有帮助