作者:opheliamaizi | 来源:互联网 | 2022-12-01 10:54
期望什么
泊坞窗应构建映像并运行容器
Docker文件
FROM centos:7
ENV JAVA_VERSION 8u191
ENV BUILD_VERSION b12
RUN yum -y install wget; wget --no-COOKIEs --no-check-certificate --header "COOKIE: oraclelicense=accept-securebackup-COOKIE" "http://download.oracle.com/otn-pub/java/jdk/$JAVA_VERSION-$BUILD_VERSION/2787e4a523244c269598db4e85c51e0c/jdk-$JAVA_VERSION-linux-x64.rpm" -O /tmp/jdk-8-linux-x64.rpm; yum -y install /tmp/jdk-8-linux-x64.rpm
# JDK stripping
RUN rm -f /usr/java/jdk1.8.0_77/src.zip /usr/java/jdk1.8.0_77/javafx-src.zip
RUN rm -rf /usr/java/jdk1.8.0_77/lib/missioncontrol/ /usr/java/jdk1.8.0_77/lib/visualvm/ /usr/java/jdk1.8.0_77/db/
RUN alternatives --install /usr/bin/java java /usr/java/latest/bin/java 1
RUN alternatives --install /usr/bin/javac javac /usr/java/latest/bin/javac 1
ENV JAVA_HOME /usr/java/latest
ENV PATH=$PATH:/usr/java/latest/bin/java
RUN echo "$PATH"
RUN rm -f /tmp/jdk-8-linux-x64.rpm; yum -y remove wget; yum -y clean all
COPY target/gs-handling-form-submission-0.1.0.jar /tmp/gs-handling-form-submission-0.1.0.jar
CMD [ "java -jar /tmp/gs-handling-form-submission-0.1.0.jar" ]
build-context是Dockerfile所在的当前目录。以下是目录结构
total 8
-rw-r--r--. 1 root root 1079 Oct 29 03:42 Dockerfile
-rw-rw-r--. 1 ec2-user ec2-user 1917 Oct 27 09:17 pom.xml
drwxrwxr-x. 4 ec2-user ec2-user 30 Oct 27 10:15 src
drwxr-xr-x. 9 root root 261 Oct 27 10:19 target
我正在执行以下命令来构建图像:
docker build --no-cache -f Dockerfile -t cpa:latest .
但是当运行容器时,得到以下消息
docker run -d -p 8081:8081/tcp cpa
b2ba9831f1b74c73669843658727ca0d64fcd9de915739b96e17dcfd6e63c7db
docker: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"java -jar /tmp/gs-handling-form-submission-0.1.0.jar\": stat java -jar /tmp/gs-handling-form-submission-0.1.0.jar: no such file or directory": unknown.
我不确定为什么docker文档中容器文件系统的/ tmp dir中的内置jar不可用COPY
是用于将文件从主机复制到容器文件系统的正确关键字...但是然后在哪里问题 ..?请建议
编辑1:将类型错误从77修正为191,这是最新的Dockerfile ....
FROM centos:7
ENV JAVA_VERSION 8u191
ENV BUILD_VERSION b12
RUN yum -y install wget; wget --no-COOKIEs --no-check-certificate --header "COOKIE: oraclelicense=accept-securebackup-COOKIE" "http://download.oracle.com/otn-pub/java/jdk/$JAVA_VERSION-$BUILD_VERSION/2787e4a523244c269598db4e85c51e0c/jdk-$JAVA_VERSION-linux-x64.rpm" -O /tmp/jdk-8-linux-x64.rpm; yum -y install /tmp/jdk-8-linux-x64.rpm
# JDK stripping
RUN rm -f /usr/java/jdk1.8.0_191/src.zip /usr/java/jdk1.8.0_191/javafx-src.zip
RUN rm -rf /usr/java/jdk1.8.0_191/lib/missioncontrol/ /usr/java/jdk1.8.0_191/lib/visualvm/ /usr/java/jdk1.8.0_191/db/
RUN alternatives --install /usr/bin/java java /usr/java/latest/bin/java 1
RUN alternatives --install /usr/bin/javac javac /usr/java/latest/bin/javac 1
ENV JAVA_HOME /usr/java/latest
ENV PATH=$PATH:/usr/java/latest/bin/java
RUN echo "$PATH"
RUN rm -f /tmp/jdk-8-linux-x64.rpm; yum -y remove wget; yum -y clean all
COPY target/gs-handling-form-submission-0.1.0.jar /tmp/gs-handling-form-submission-0.1.0.jar
CMD [ "java -jar /tmp/gs-handling-form-submission-0.1.0.jar" ]
此外,该target
目录是构建上下文的一部分,请参考以下内容:
[root@ip-172-31-14-242 cpa_final]# pwd
/tmp/cpa_final
[root@ip-172-31-14-242 cpa_final]# ll
total 8
-rw-r--r--. 1 root root 1084 Oct 29 05:16 Dockerfile
-rw-rw-r--. 1 ec2-user ec2-user 1917 Oct 27 09:17 pom.xml
drwxrwxr-x. 4 ec2-user ec2-user 30 Oct 27 10:15 src
drwxr-xr-x. 9 root root 261 Oct 27 10:19 target
[root@ip-172-31-14-242 cpa_final]# cd target/
[root@ip-172-31-14-242 target]# ll
total 17304
drwxr-xr-x. 4 root root 36 Oct 27 10:18 classes
drwxr-xr-x. 3 root root 25 Oct 27 10:18 generated-sources
drwxr-xr-x. 3 root root 30 Oct 27 10:18 generated-test-sources
-rw-r--r--. 1 root root 17708542 Oct 27 10:19 gs-handling-form-submission-0.1.0.jar
-rw-r--r--. 1 root root 4858 Oct 27 10:18 gs-handling-form-submission-0.1.0.jar.original
drwxr-xr-x. 2 root root 28 Oct 27 10:18 maven-archiver
drwxr-xr-x. 3 root root 35 Oct 27 10:18 maven-status
drwxr-xr-x. 2 root root 121 Oct 27 10:18 surefire-reports
drwxr-xr-x. 3 root root 19 Oct 27 10:18 test-classes
[root@ip-172-31-14-242 target]#
编辑2:
提到的jar文件位于/tmp
容器文件系统的目录中。公安局
[root@ip-172-31-14-242 ~]# docker run -it cpa /bin/bash
[root@4018a6c2df8e /]# cd /tmp
[root@4018a6c2df8e tmp]# ll
total 17300
-rw-r--r--. 1 root root 17708542 Oct 27 10:19 gs-handling-form-submission-0.1.0.jar
-rwx------. 1 root root 836 Oct 6 19:15 ks-script-7RxiSx
-rw-------. 1 root root 0 Oct 6 19:14 yum.log
[root@4018a6c2df8e tmp]#
kutschkem..
5
ENV PATH=$PATH:/usr/java/latest/bin/java
应该是
ENV PATH=$PATH:/usr/java/latest/bin
我假设找不到Java可执行文件。请检查Java是否确实在PATH上。
这行还出错了:
CMD [ "java -jar /tmp/gs-handling-form-submission-0.1.0.jar" ]
内容应为:
CMD [ "java", "-jar", "/tmp/gs-handling-form-submission-0.1.0.jar" ]
现在,它正在寻找一个名为“ java -jar /tmp/gs-handling-form-submission-0.1.0.jar”的文件,并尝试执行该文件。
1> kutschkem..:
ENV PATH=$PATH:/usr/java/latest/bin/java
应该是
ENV PATH=$PATH:/usr/java/latest/bin
我假设找不到Java可执行文件。请检查Java是否确实在PATH上。
这行还出错了:
CMD [ "java -jar /tmp/gs-handling-form-submission-0.1.0.jar" ]
内容应为:
CMD [ "java", "-jar", "/tmp/gs-handling-form-submission-0.1.0.jar" ]
现在,它正在寻找一个名为“ java -jar /tmp/gs-handling-form-submission-0.1.0.jar”的文件,并尝试执行该文件。