CentOS 7 docker部署jar包

目录

  • 1. 前期准备
  • 2. 构建镜像
  • 3. 运行容器
  • 4. 查看结果
  • 5. 其他
    • 5.1 移除命令
    • 5.2 遇到的问题
      • 5.2.1 COPY failed: file not found in build context or excluded by .dockerignore: stat test/Docker/demo.jar: file does not exist
      • 5.2.2 Error: Invalid or corrupt jarfile demo.jar
  • 6. 参考

1. 前期准备

可运行jar包:demo.jar
制作镜像文件:Dockerfile,文件具体内容如下:

# 基础镜像
FROM java:openjdk-8

# 作者或联系方式
MAINTAINER wal

# 将demo.jar文件复制到容器,并命名为demo
# COPY 主机文件 容器文件
# 主机文件要写相对路径
COPY ./demo.jar demo.jar

# 容器暴露端口
EXPOSE 9090

# 容器运行执行的命令
# --spring.rabbitmq.host=192.168.138.128 修改application配置文件,如果无rabbitmq,可忽略
ENTRYPOINT ["java", "-jar", "demo.jar", "--spring.rabbitmq.host=192.168.138.128"]

Dockerfile

2. 构建镜像

将demo.jar和Dockerfile放到同一目录下,在该目录下打包生成镜像,具体命令如下:

# java-demo 镜像名
# "." 将当前目录下所有内容都进行打包
docker build -t java-demo .

CentOS 7 docker部署jar包_第1张图片

3. 运行容器

# --name java-demo 容器名为java-demo
# -p 9090:9090 主机端口映射为容器端口,主机端口:容器端口
# -d 后台运行
# --restart=always 重启策列
# java-demo:latest 镜像名
docker run --name java-demo -p 9090:9090 -d --restart=always  java-demo:latest

# 查看容器
docker ps

# 追踪日志
docker logs -f java-demo

CentOS 7 docker部署jar包_第2张图片

4. 查看结果

CentOS 7 docker部署jar包_第3张图片

5. 其他

5.1 移除命令

# 移除容器
docker rm -f java-demo

# 移除镜像
docker image rm  java-demo

CentOS 7 docker部署jar包_第4张图片

5.2 遇到的问题

5.2.1 COPY failed: file not found in build context or excluded by .dockerignore: stat test/Docker/demo.jar: file does not exist

COPY failed

原因:Dockerfile中的COPY命令,主机文件使用了绝对路径
解决:主机文件改为相对路径即可

5.2.2 Error: Invalid or corrupt jarfile demo.jar

CentOS 7 docker部署jar包_第5张图片
原因:通过拖拉或复制文件的方式上传demo.jar到虚拟机,导致文件受损(注:demo.jar在windows上是可执行的)
解决:通过WinSCP等软件上传demo.jar

6. 参考

链接: Docker Dockerfile
链接: Invalid or corrupt jarfile jar

若有不足,欢迎指出,开发之路,与君共勉!

你可能感兴趣的:(Linux,docker,centos,jar)