之前项目构建Docker容器部署时每次代码更新都要重新构建一次镜像,导致Docker images -a 时候会有很多none的镜像。
记录一下Docker中替换jar,不用重新构建。只需要重新启动容器就可以完成项目代码的更新。
首次部署Docker时需要构建镜像。
Dockerfile
FROM openjdk:8u265-jdk RUN echo "Asia/Shanghai" > /etc/timezone RUN mkdir /demo/ EXPOSE 9004 CMD ["nohup","java", "-Xms512m", "-Xmx512m", "-XX:metaspaceSize=256m", "-XX:MaxmetaspaceSize=512m","-jar","/demo/demo.jar","&"]
首次构建时在容器中创建jar存放目录,用于和宿主机映射
启动脚本
#!/bin/sh # 进入到项目目录 cd /data/project/demo # 这里没有使用Jenkins 在机器上装git 使用git命令更新代码 git pull mvn clean package -Dmaven.test.skip=true -pl demo -am # 构建镜像 docker build -f Dockerfile -t demo:0.0.1 . docker run --name demo -e HOST=0.0.0.0 -d -p 9003:9003 -v /data/project/demo/target:/demo -v /etc/localtime:/etc/localtime:ro -v /data/logs/demo/:/data/logs/demo/ demo:0.0.1 docker logs demo
docker 启动命令中 -v /data/project/demo/target:/demo 就是将宿主机的目录和容器中的目录映射,所以我们后续更新只需要更新宿主机里的jar就可以
以上是首次构建时的命令,首次构建成功后将启动脚本修改
修改后的启动脚本
#!/bin/sh # 进入到项目目录 cd /data/project/demo # 这里没有使用Jenkins 在机器上装git 使用git命令更新代码 git pull mvn clean package -Dmaven.test.skip=true -pl demo -am # 重启容器 docker restart demo
如果是用Jenkins直接将jenkins中拉取的jar传到目标服务器的项目目录中就可以。
使用手动上传jar的可以直接将目录中的jar替换
仅此记录



