- 目录结构以及准备的文件
├── dockerfile
│ ├── Dockerfile
│ ├── application.properties
│ ├── demo.jar
│ └── jdk-17.0.9-linux-x64.tar.gz
2.Dockerfile内容
FROM ubuntu:latest
# JDK存放处
ENV JAVA_DIR=/home
# 拷贝本地jdk到容器home目录下
COPY ./jdk-17.0.9-linux-x64.tar.gz $JAVA_DIR/
# 拷贝本地的java jar包到home目录下
COPY ./demo.jar $JAVA_DIR/
# 拷贝本地的配置文件到home目录下
COPY ./application.properties $JAVA_DIR/
# 进入home目录,解压压缩包,重命名,授予执行权限
RUN cd $JAVA_DIR \
&& tar -xf ./jdk-17.0.9-linux-x64.tar.gz \
&& mv jdk-17.0.9+8 jdk17 \
&& chmod 775 $JAVA_DIR/demo.jar
# 指定java所在目录 在linux里是export
ENV JAVA_HOME=$JAVA_DIR/jdk17
# 把java的路径设置到path里
ENV PATH=$PATH:$JAVA_HOME/bin
# java jar包启动,指定配置文件,当数据库改变时,可以通过docker cp ./application.properties d74cfda839f6:/home/# application.properties将需要的配置文件拷贝到容器里
ENTRYPOINT ["java","-Dspring.config.location=/home/application.properties", "-jar", "/home/demo.jar"]
3.构建镜像
docker run --name appv1 -d app:v1
4.查看生成镜像
sixdog@sixiaodong jarExcute % docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
app v1 31ad2f4bba78 9 minutes ago 655MB
5.创建并运行容器
docker run --name app -p 8081:8081 -d app:v1
6.查看创建的容器
sixdog@sixiaodong jarExcute % docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d74cfda839f6 app:v1 "java -Dspring.confi…" 7 minutes ago Up 7 minutes 0.0.0.0:8081->8081/tcp app
7.启动画面确认