记录一下学习Docker遇到的坑
如果您在学习Docker的时候也遇到了以下类似问题,这篇文章可能会帮助到您!
docker exec: “java”: executable file not found in $PATH
Error: Invalid or corrupt jarfile /app/api.jar
Error: Unable to access jarfile /app.jar
1. 首先准备一个有JDK的镜像
创建镜像
步骤:
(1)创建目录
mkdir –p /usr/local/dockerjdk8
(2)下载jdk-8u231-linux-x64.tar.gz并上传到服务器(虚拟机)中的/usr/local/dockerjdk8目录
(3)在当前文件夹创建文件Dockerfile
vi Dockerfile
填写以下信息
这里最好复制,我刚开始就是输错了一个local,
导致一直报这个docker exec: "java": executable file not found in $PATH
错
#依赖镜像名称和ID
FROM centos:7
#指定镜像创建者信息
MAINTAINER XIAOTIAN
#切换工作目录
WORKDIR /usr
RUN mkdir /usr/local/java
#ADD 是相对路径jar,把java添加到容器中
ADD jdk-8u231-linux-x64.tar.gz /usr/local/java/
#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_231
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
(4)执行命令构建镜像
docker build -t='jdk1.8' .
注意后边的空格和点,不要省略
(5)查看镜像是否建立完成
docker images
2. 再IDEA搭建Springboot项目
(1) 新建项目(略)
(2) 配置POM文件
<build>
<finalName>app</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!--docker maven插件-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.3.7</version>
<configuration>
<repository>${docker.repostory}/${project.artifactId}</repository>
<tag>latest</tag>
</configuration>
</plugin>
</plugins>
</build>
(3) 创建DockerFile文件
- 在项目根目录下创建一个Dockerfile文件
- 填写类似如下信息
FROM jdk1.8
MAINTAINER xiaotian
WORKDIR /
ADD target/app.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]
我最开始的时候没写WORKDIR
Error: Unable to access jarfile /app.jar
就爆出了这个错误
这个问题是找不到app.jar
如果不指定工作目录可能是上传到别的目录了,这个具体我没有细看,
所以遇到了这个问题一定要检查自己的jar包是否在根目录下,或者后买你设置执行的时候指定目录执行
如果配置不正确还可能遇到这个问题,这个问题是说jar包是损坏的或者是无效的,或者说他根本就不是一个jar包,那你就要检查你打包时候的配置了,如果按我的这个配置,基本上是没有问题的
Error: Invalid or corrupt jarfile /app/api.jar
(4) 在IDEA上配置Dokcer
- 在导航条上找到Edit configurations,进入编辑
- 依次选择以下
- 修改宿主机的docker配置,让其可以远程访问
vi /lib/systemd/system/docker.service
其中ExecStart=后添加配置
‐H tcp://0.0.0.0:2375 ‐H unix:///var/run/docker.sock
修改后如下:
-
在IDEA上配置Docker连接到服务器
-
设置Docker构造镜像和容器的参数
(5) 运行DockerFileDemo
运行之后可以看到创建的镜像和容器
最后我们查看log
我们的jar就成功在镜像上启动了
谢谢大家!
在此过程中遇到什么问题,欢迎留言!