常用的springboot项目中的Dockerfile示例
Dockerfile:利用容器打包并缓存maven
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| FROM maven:3.8.3-openjdk-17 as builder
RUN mkdir /project
COPY settings.xml /usr/share/maven/conf/settings.xml
COPY ./pom.xml /project/pom.xml
WORKDIR /project
RUN mvn dependency:go-offline
COPY ./src /project/src
RUN mvn clean package -Dmaven.test.skip=true
FROM openjdk:17
COPY --from=builder /project/target/xxxx.jar /
ENTRYPOINT ["java","-jar","/xxxx.jar"]
EXPOSE 8080
|
配套deploy.sh脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| #!/bin/bash start=$(date +%s) cd /data/java_project_dir echo "切换目录" git pull echo "更新代码 完成" docker build . --tag tts echo "打包镜像 完成" docker stop tts echo "停止服务 完成" docker rm tts echo "删除容器 完成" docker run -itd --name=tts -p 28085:8080 tts echo "启动服务 完成" docker image prune -f echo "删除无tag镜像" end=$(date +%s) take=$(( end - start )) echo 操作完成 本次用时:${take}s
|
安装dnf命令
正常情况下openjdk:17的镜像中是不带有yum或者dnf命令,如果要用上这个命令那就需要安装一下
启动与openjdk:17 对应相同版本的 oracleLinux (查询镜像内的cat /etc/os-release)
1
| docker run -itd --name=oraclelinux85 oraclelinux:8.5
|
进入容器
1
| docker exec -it oraclelinux85 /bin/bash
|
安装基础包
1
| yum -y install yum-utils
|
下载dnf所有程序包(包括依赖),程序会下载所有文件在当前目录下
退出容器 oraclelinux85 ,并复制文件到宿主机
1
| docker cp oraclelinux85:/root/* ./tmp
|
复制文件从宿主机到目标容器
1
| docker cp ./tmp targetContainer:/root/
|
进入目标容器安装程序
1 2 3 4
| docker exec -it targetContainer /bin/bah cd /root/ rpm -Uvh --force --nodeps *.rpm rm -rf *.rpm
|
最后,愉快的使用dnf命令吧