在上一篇微服务之搭建nexus私服中,我们使用nexus搭建了私服。下面我们将spring boot工程来构建镜像并push到nexus私服中。
创建Dockerfile文件
FROM gradle:3.5-jre8
COPY ./build/libs/goods-service-0.0.1-SNAPSHOT.jar /app/goods-service-0.0.1-SNAPSHOT.jar
WORKDIR /app
CMD ["-jar", "goods-service-0.0.1-SNAPSHOT.jar"]
- From指定了基础镜像。由于工程使用gradle作为构建工具,所以使用gradle:3.5-jre8作为基础镜像。当然可以自行选择版本。
- COPY 会将build(见下面)到jar包copy到容器到app目录中
- WORKDIR指定工作目录
- CMD就是容器再启动到时候运行到命令。
创建镜像构建脚本
脚本名为build.sh
#! /usr/bin/env bash
PRIVATE_REPO=127.0.0.1:5000
echo "123"
build(){
./gradlew clean build
docker login ${PRIVATE_REPO} -u admin -p admin123
docker build -t ${PRIVATE_REPO}/mst-goods-service .
docker push ${PRIVATE_REPO}/mst-goods-service
docker rmi ${PRIVATE_REPO}/mst-goods-service
}
case $1 in
build)
build
;;
esac
PRIVATE_REPO变量指定了nexus私服地址。
build方法到执行过程为:
- 运行gradle命令build工程
- 运行docker build命令来创建镜像
- 将镜像push到nexus私服
- 删除掉本地到镜像
运行sh ./build.sh build
命令就可以构建服务镜像并push到nexus中。如果我们需要部署服务,就可以在私服中pull镜像并运行。