赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. Serverless应用引擎(新版)
  4. 操作指南
  5. 应用部署
  6. 通过镜像部署应用
  7. 制作Go镜像

制作Go镜像

  • 通过镜像部署应用
  • 发布于 2025-04-17
  • 0 次阅读
文档编辑
文档编辑

本文介绍如何在本地制作Docker镜像,并以镜像方式将Go应用部署到Serverless 应用引擎 SAE(Serverless App Engine)。

前提条件

  • 安装Docker。

  • 开通阿里云SAE服务。

  • 开通阿里云容器镜像ACR服务并创建实例,个人版实例和企业版实例皆可。

步骤一:准备项目

  1. 下载Demo。

    Demo内的Dockerfile内容如下:

    # Golang版本;Alpine镜像的体积较小。
    FROM golang:1.16.6-alpine3.14 as builder
    
    # 替换Alpine镜像,方便安装构建包。
    RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
    
    # 安装构建阶段的依赖。
    RUN apk --update add gcc libc-dev upx ca-certificates && update-ca-certificates
    
    # 将代码复制到构建镜像中。
    # 注意地址不要在GOPATH中。
    ADD . /workspace
    
    WORKDIR /workspace
    
    # 挂载构建缓存。
    # GOPROXY防止下载失败。
    RUN --mount=type=cache,target=/go \
      env GOPROXY=https://goproxy.cn,direct \
      go build -buildmode=pie -ldflags "-linkmode external -extldflags -static -w" \
      -o /workspace/gin-hello-world
    
    # 运行时镜像。
    # Alpine兼顾了镜像大小和运维性。
    FROM alpine:3.14
    
    EXPOSE 8080
    
    # 方便运维人员安装需要的包。
    RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
    
    # 创建日志目录等。
    # RUN mkdir /var/log/onepilot -p && chmod 777 /var/log/onepilot && touch /var/log/onepilot/.keep
    
    # 复制构建产物。
    COPY --from=builder /workspace/gin-hello-world /app/
    
    # 指定默认的启动命令。
    CMD ["/app/gin-hello-world"]
  2. 在Demo所在目录,执行以下命令,构建镜像。

    docker build . -t gin-example
  3. 本地验证。

    1. 指定端口映射,格式为主机端口:容器端口,运行镜像。

      docker run -p 127.0.0.1:8080:8080/tcp gin-example
    2. 执行以下命令,查看请求是否返回正常。

      curl http://127.0.0.1:8080/

      输出如下:pg_go_response

步骤二:制作镜像

  1. 在容器镜像服务控制台创建镜像仓库。

    个人版和企业版实例均适用本文的操作,本文以个人版实例为例。具体操作,请参见以下文档:

    • 个人版实例:构建仓库与镜像

    • 企业版实例:使用企业版实例构建镜像

  2. 构建并推送镜像。

    您可以在目标镜像仓库的基本信息页面的镜像指南页签查询具体命令。更多信息,请参见以下文档:

    • 个人版实例:使用个人版实例推送拉取镜像

    • 企业版实例:使用企业版实例推送和拉取镜像

    1. 执行以下命令,构建镜像。

      docker build --tag go-demo:v1 .
    2. 执行以下命令,登录远端镜像仓库。

      docker login --username=<镜像仓库登录名> registry.<regionId>.aliyuncs.com

      示例如下:

      docker login --username=****@188077086902**** registry.cn-hangzhou.aliyuncs.com

      在返回结果中输入密码,如果显示login succeeded,则表示登录成功。如何设置密码,请参见设置镜像仓库登录密码。

    3. 执行以下命令,给镜像打标签。

      docker tag <ImageId> registry.<regionId>.aliyuncs.com/****/go-demo:<镜像版本号>
      • ImageId:镜像ID。

      • registry.<regionId>.aliyuncs.com/****/go-demo:镜像仓库地址。

      示例如下:

      docker tag go-demo:v1 registry.cn-hangzhou.aliyuncs.com/****/go-demo:v1
    4. 执行以下命令,推送镜像至个人版实例。

      docker push registry.<regionId>.aliyuncs.com/****/go-demo:<镜像版本号>

      示例如下:

      docker push registry.cn-hangzhou.aliyuncs.com/****/go-demo:v1

    成功推送后,您可以登录容器镜像服务控制台,在目标镜像仓库的镜像版本页面查看推送的版本。

步骤三:部署镜像

以下仅介绍本文相关的配置项,其余信息,请参见通过镜像部署Web应用。

  1. 在SAE控制台>应用管理>Web应用,从顶部菜单栏选择地域,然后单击创建应用。

    image

  1. 设置应用部署方式为选择镜像部署,并单击设置镜像,选择您已准备好的应用镜像仓库和镜像版本。为定位到所需的镜像仓库,请单击我的阿里云镜像,并选择镜像仓库所在的镜像服务版本和命名空间。

    image

    image

  1. 将HTTP监听端口设置为镜像对外提供服务的端口。

    image

  1. 单击一键创建应用,并等待应用部署完成。

步骤四:访问应用

SAE为您的应用提供默认的访问地址,您可以通过公网访问应用或通过私网访问应用;在实际的生产环境中,建议您为应用关联自定义域名,并使终端用户通过自定义域名访问应用。

相关文章

制作Java镜像 2025-04-17 11:00

Spring Cloud、Dubbo、HSF框架下开发并编译的应用WAR包或JAR包,如果需要在Serverless 应用引擎 SAE(Serverless App Engine)上以镜像方式部署,需要将WAR包或JAR包制作为应用镜像,以便部署时使用。本文介绍镜像制作的使用规范、以不同代码包编译的

制作PHP镜像 2025-04-17 11:00

SAE支持在自定义镜像、其它阿里云账号私有镜像和我的阿里云镜像中选择镜像部署。本文介绍如何制作PHP镜像并部署到Serverless 应用引擎 SAE(Serverless App Engine)。

制作Go镜像 2025-04-17 11:00

本文介绍如何在本地制作Docker镜像,并以镜像方式将Go应用部署到Serverless 应用引擎 SAE(Serverless App Engine)。 前提条件

制作Node.js镜像 2025-04-17 11:00

本文介绍如何在本地制作Node.js镜像,并以镜像方式将应用部署到Serverless 应用引擎 SAE(Serverless App Engine)。 前提条件

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号