【docker的那些事】Dockerfile构建并推送到阿里云仓库

本文详细介绍如何将SpringBoot项目打包成Docker镜像,并推送到Docker仓库,包括Dockerfile编写、镜像构建、镜像推送及从阿里云仓库拉取的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

场景

假如我有一个springboot的项目,在传统的方式去部署,我需要一台linux服务器,并且在服务器上安装配置jdk等操作,当然对于springboot的项目来说只需要这样,然后执行 java -jar或者 nohup java -jar去执行。

我们在编写一个DockerFile的时候,我们会怎么去考虑呢?比如:

我有一个Spring Boot项目(这也是比较简单的,直接运行jar包好),我希望把这个项目编制成image,然后把这个image给你,你也能够运行成。

1.准备一个Spring Boot项目

2.给他编译成jar

3.java -jar xxx.jar

4.mvn clean package

6.构建image

7.push到仓库给别人pull

我们现将项目打成jar包(后续会介绍从git上进行构建)传到装有docker的服务器上,并添加Dockerfile文件

在这里插入图片描述

#基础镜像
FROM openjdk:8 

#维护者
MAINTAINER orange

#标签
LABEL name="dockerfile-demo" version="1.0" author="jack"

#复制jar包至image,此处我将Dockerfile文件放在与jar同级目录并取名为dockerfile-image.jar
COPY docker-demo-0.0.1-SNAPSHOT.jar dockerfile-image.jar

#RUN 是执行linux的命令
#RUN

#执行命令
CMD ["java","-jar","dockerfile-image.jar"]




执行命令

docker build -t test-docker-image .

进行image构建

-t 镜像名字为 test-docker-image

. 表示使用当前目录的Dockerfile

在这里插入图片描述

发现进行构建image了,这里可能需要等待一会,因为需要去下载openjdk8.

构建完之后,查看image,发现构建完成。

docker images

在这里插入图片描述

我们执行一下试试

docker run -d --name hello-docker -p 9527:9527 test-docker-images

查看是否运行

docker ps

在这里插入图片描述

请求接口

curl -X GET "http://ip:你的端口/接口路径"

查看日志是否请求到,我这里是在控制台进行了打印所以需要查看日志,也可以返回一些json串来作为反馈。

docker logs 3c4db9757338 

在这里插入图片描述

到此,简单的docker构建本地项目就完成了。那么我们接下来就行需要push到docker仓库。

push到仓库

登录docker,如果没有账号的自行注册一个就行:docker地址

docker login

会提示输入用户名和密码,照着操作就行

进行push

docker push test-docker-images

在这里我们直接push他肯定会报错,因为我们需要指定push哪个用户下的哪个仓库。

我们首先生成一个副本

docker tag test-docker-images wodyiyi/test-docker-images:v1.0

再次进行push

docker push wodyiyi/test-docker-images:v1.0

这个时间比较久,在push完成后,可以在进行pull看看能不能拉取到

docker pull wodyiyi/test-docker-images:v1.0

发现也能成功

enenenen…发现贼吉尔慢。。。我们在阿里云自己建一个仓库push上去

创建阿里云docker仓库。

这里我们在安装docker的时候其实已经对docker进行配置了镜像加速,有兴趣的可以参考另一篇文章:Docker安装和镜像加速

登录阿里云:点击跳转,依然找到链接文章中的容器镜像服务,在实例列表中点击个人实例可以看到,可以自行创建一个命名空间
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

退出之前的dockerhub的登录

docker logout

登录阿里云镜像仓库

sudo docker login --username=你的阿里云账号 registry.cn-hangzhou.aliyuncs.com

将image进行tag 成阿里云的

docker tag test-docker-images registry.cn-hangzhou.aliyuncs.com/orange-docker/test-docker-images:v1.0

进行push

docker push test-docker-images registry.cn-hangzhou.aliyuncs.com/orange-docker/test-docker-images:v1.0

在这里插入图片描述

可以发现推送成功

### 将JAR文件推送阿里云镜像仓库 为了将基于JAR文件的应用程序打包推送阿里云镜像仓库,需遵循一系列操作流程。这包括创建Dockerfile定义应用环境、构建Docker镜像以及通过特定命令上传该镜像到云端存储库。 #### 创建 Dockerfile构建镜像 首先,在项目根目录下创建名为 `Dockerfile` 的文件来指定Java运行时和其他必要的配置项[^3]: ```dockerfile FROM openjdk:8-jdk ENV LANG=C.UTF-8 ENV LC_ALL=C.UTF-8 WORKDIR /app COPY target/*.jar /app/app.jar RUN apt-get update && apt-get install -y vim EXPOSE 8080 LABEL maintainer="docker" CMD ["java", "-jar", "app.jar"] ``` 此脚本使用OpenJDK 8作为基础映像,设置了一些基本参数如工作路径和暴露的服务端口。最后指定了启动容器时要执行的命令以加载应用程序。 接着利用上述Dockerfile构建一个新的自定义镜像: ```bash docker build -t myspringbootimage:1.0 . ``` 这里 `-t` 参数用于给新创建的镜像打上标签以便识别。 #### 修改镜像名称与远程仓库关联 完成本地镜像构建之后,需要对其进行重命名使其能够被正确识别为目标注册表中的资源。具体做法是在原有基础上附加完整的URL地址指向目标位置上的私有或公共空间[^1]: ```bash docker tag myspringbootimage:1.0 registry.cn-hangzhou.aliyuncs.com/xxx/mytest:1.0 ``` 这条指令会为现有镜像添加另一个标记,使得其可以按照新的全限定名进行引用。 #### 登录阿里云镜像仓库 在实际推送之前还需要先验证身份信息确保拥有足够的权限来进行后续的操作。可以通过如下方式输入用户名及访问密钥完成认证过程(注意这里的密码是指定于个人账户下的凭证而非整体平台登陆使用的那一套): ```bash docker login --username=xxx registry.cn-hangzhou.aliyuncs.com ``` 成功连接后即表示已经获得了向对应服务器发送请求的权利。 #### 推送镜像到阿里云 现在万俱备只欠东风——只需简单调用一次push方法就能把精心准备好的制品安全稳妥地存放到远端去了! ```bash docker push registry.cn-hangzhou.aliyuncs.com/xxx/mytest:1.0 ``` 这一系列动作完成后便意味着整个部署周期画上了圆满句号;当然如果想要结束当前对话也可以选择退出登录状态[^4]: ```bash docker logout registry.cn-hangzhou.aliyuncs.com ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

陈橙橙丶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值