0**.**准备工作 {#0.%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C}
os:macos 15.0
jdk:1.8
docker:26.0.0
1.阿里云容器镜像服务创建实例 {#1.%E9%98%BF%E9%87%8C%E4%BA%91%E5%AE%B9%E5%99%A8%E9%95%9C%E5%83%8F%E6%9C%8D%E5%8A%A1%E5%88%9B%E5%BB%BA%E5%AE%9E%E4%BE%8B}
https://cr.console.aliyun.com/cn-shanghai/instances
创建个人版
个人实例创建成功
个人镜像加速器地址
2. 安装Docker Desktop {#2.-%E5%AE%89%E8%A3%85docker-desktop}
https://www.docker.com/products/docker-desktop/
Docker Desktop是Docker的一个集成工具,非必须,过程略。
打开Docker Engine,在registry-mirros中添加阿里云的个人镜像加速器地址
(没有安装Docker Desktop的可使用命令行添加)
3. 新建SpringBoot项目 {#3.-%E6%96%B0%E5%BB%BAspringboot%E9%A1%B9%E7%9B%AE}
新建接口"/hello"(测试用,根据实际情况而定)
端口8889(测试用,根据实际情况而定)
pom.xml中指定Main-Class(会打包到jar文件中,通过命令启动服务时需要)
maven package命令打jar包
项目根目录下新建Dockerfile文件(构建镜像必须,Dockerfile相关自行了解)
测试一下
特别说明: {#%E7%89%B9%E5%88%AB%E8%AF%B4%E6%98%8E%EF%BC%9A}
当根据Dockerfile构建镜像时,Docker会根据FROM指令来确定基础镜像,如果本地不存在该基础镜像则会自动拉取到本地,如果拉取失败则会导致构建镜像失败。
以下镜像地址来自亚马逊镜像仓库,自行选择版本(基础镜像仓库也可自行选择)。
https://gallery.ecr.aws/amazoncorretto/amazoncorretto
# 使用官方的Java运行时环境作为基础镜像
FROM public.ecr.aws/amazoncorretto/amazoncorretto:8u412
设置工作目录为/app,将target下的jar包复制到工作目录下。(目录和jar包名根据实际情况而定)
# 设置工作目录
WORKDIR /app
将项目的jar文件复制到容器中
===============
`COPY target/hello-world-1.0.0.jar /app/hello-world-1.0.0.jar`
创建容器时执行命令去启动服务
# 运行应用程序
ENTRYPOINT ["java", "-jar", "/app/hello-world-1.0.0.jar"]
4. 构建镜像 {#4.-%E6%9E%84%E5%BB%BA%E9%95%9C%E5%83%8F}
4.1 在阿里云创建镜像仓库 {#4.1-%E5%9C%A8%E9%98%BF%E9%87%8C%E4%BA%91%E5%88%9B%E5%BB%BA%E9%95%9C%E5%83%8F%E4%BB%93%E5%BA%93}
获取访问凭证,设置固定密码
新建命名空间
创建镜像仓库
选择刚刚创建的命名空间,输入仓库名称和摘要
进入刚创建的镜像仓库,可以看到仓库的基本信息和一些命令
4.2 构建镜像 {#4.2-%E6%9E%84%E5%BB%BA%E9%95%9C%E5%83%8F}
构建镜像(spacexxxxxx是上面创建的命名空间,1.0.0是版本号)
sudo docker build -t spacexxxxxx/hello-world:1.0.0 .
构建镜像成功以后,打开Docker Desktop就可以看到
(没有安装Docker Desktop的通过命令执行,命令自行查询)
4.3 创建容器 {#4.3-%E5%88%9B%E5%BB%BA%E5%AE%B9%E5%99%A8}
(没有安装Docker Desktop的通过命令执行,命令自行查询)
容器创建成功,服务启动
测试一下
4.4 推送镜像到阿里云 {#4.4-%E6%8E%A8%E9%80%81%E9%95%9C%E5%83%8F%E5%88%B0%E9%98%BF%E9%87%8C%E4%BA%91}
登录阿里云账号
docker login --username=username registry.cn-shanghai.aliyuncs.com
镜像推送到镜像仓库
docker tag hello-world:1.0.0 registry.cn-shanghai.aliyuncs.com/spacexxxxxx/hello-world:1.0.0
docker push registry.cn-shanghai.aliyuncs.com/spacexxxxxx/hello-world:1.0.0
镜像已推送到阿里云容器镜像仓库
从仓库中拉取镜像到本地
docker pull registry.cn-shanghai.aliyuncs.com/spacexxxxxx/hello-world:1.0.0
以上。