Devops系列一(制作并发布java项目的docker镜像)

一、背景

作为云原生架构下的devops开发,怎么能离得了Docker呢,本文作为devops系列文章的第一篇,将详细说明如何制作一个docker镜像,以及推送到镜像仓库,直到拉取镜像,运行一个容器的整个过程。

二、编写Dockerfile

FROM openjdk:8u201-jdk-alpine3.9

#构建参数
ARG WORK_PATH="/opt/xxx"

# 设置时区
RUN apk update && apk add ca-certificates && \
    apk add tzdata && \
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    echo "Asia/Shanghai" > /etc/timezone

ARG APPNAME
ARG PACKAGE_PATH="target"
COPY ${PACKAGE_PATH}/${APPNAME}.jar ${WORK_PATH}/${APPNAME}/packages/${APPNAME}.jar

# 暴露端口
ARG PORT
EXPOSE ${PORT}/tcp

# 创建dump目录
RUN mkdir -p ${WORK_PATH}/${APPNAME}/dump

# 创建resources目录
RUN mkdir -p ${WORK_PATH}/${APPNAME}/resources

# 安装curl工具
RUN apk add curl

# 切换工作目录
WORKDIR ${WORK_PATH}

# 环境变量,这里配置了默认参数
ENV JAVA_OPTS="-Xms64m -Xmx512m"

ENTRYPOINT exec java ${JAVA_OPTS} \
  -XX:+HeapDumpOnOutOfMemoryError \
  -XX:HeapDumpPath=${WORK_PATH}/${APPNAME}/dump \
  -jar ${APPNAME}/packages/${APPNAME}.jar

三、生成镜像Docker build

注意最末尾的“.”别落下了!!

docker build --build-arg APPNAME="devops-service" --build-arg PORT="8085" -t xxx/devops-service:1.0.7 .

四、查询镜像Docker images

docker images | grep dev
xxx/devops-service        1.0.7       df5c6b422946   17 minutes ago   207MB

五、运行docker容器

# 注意,在正式运行的时候,建议使用 -d 替代 -it
docker run -it --name devops-service \
-e JAVA_OPTS='-Xms64m -Xmx512m -Dspring.profiles.active=dev' \
-e APPNAME='devops-service' \
-p 8085:8085 \
xxx/devops-service:1.0.7

六、验证在这里插入图片描述

在这里插入图片描述

从下图可以看出,当前服务的运行命令是
java -Xms64m -Xmx512m -Dspring.profiles.active=dev -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/devops-service/dump -jar devops-service/packages/devops-service.jar

  • 因为我们在运行容器的时候,有对环境变量JAVA_OPTS进行替换为“-Xms64m -Xmx512m -Dspring.profiles.active=dev”。(你也可以不传入,因为我在Dockerfile中有对JAVA_OPTS变量进行初始化)

在这里插入图片描述

  • 查看端口,你可以使用命令netstat

七、推送镜像到仓库

说到Docker镜像仓库,一般都是选择harbor了,这方面的文章也比较多。本文我将演示使用nexus作为docker镜像仓库。

  • 参考我之前写的一篇文章:https://blog.csdn.net/zhuganlai168/article/details/130850155
# 1、登录nexus
docker login 192.168.5.6:8086 -u 150xxxx9916 -p 123456
# 在本地,查看之前已做好的docker镜像
docker images | gerp devops-service

# 2、给镜像打tag
# 注意:Hosted私有仓库,而非group组合仓库
docker tag xxx/devops-service:1.0.7 192.168.5.6:8086/xxx/devops-service:1.0.7

# 3、推送
docker push 192.168.5.6:8086/xxx/devops-service:1.0.7

在这里插入图片描述

在这里插入图片描述

在Nexus进行确认镜像:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看到,自制的镜像已经推送到我们的私有仓库了。

其他的机器就可以愉快地docker pull xxx/devops-service:1.0.7,把docker镜像下载下来了。

至此,我们devops容器化部署的第一步就算告一段落。后期,我将在k8s中,使用helm来部署这个java服务。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天草二十六_简村人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值