目录
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"]
2. 构建镜像
将demo.jar和Dockerfile放到同一目录下,在该目录下打包生成镜像,具体命令如下:
# java-demo 镜像名
# "." 将当前目录下所有内容都进行打包
docker build -t java-demo .
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
4. 查看结果
5. 其他
5.1 移除命令
# 移除容器
docker rm -f java-demo
# 移除镜像
docker image rm java-demo
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
原因:Dockerfile中的COPY命令,主机文件使用了绝对路径
解决:主机文件改为相对路径即可
5.2.2 Error: Invalid or corrupt jarfile demo.jar
原因:通过拖拉或复制文件的方式上传demo.jar到虚拟机,导致文件受损(注:demo.jar在windows上是可执行的)
解决:通过WinSCP等软件上传demo.jar
6. 参考
链接: Docker Dockerfile
链接: Invalid or corrupt jarfile jar
若有不足,欢迎指出,开发之路,与君共勉!