首页 > 编程语言 >Go程序制作成Docker镜像

Go程序制作成Docker镜像

时间:2024-05-17 15:58:59浏览次数:22  
标签:go myapp Go 镜像 Docker Dockerfile

要将自己编写的Go程序制作成Docker镜像,你需要创建一个Dockerfile,然后使用Docker命令构建镜像。以下是一个基本的示例:

创建一个名为Dockerfile的文件,并添加以下内容:

# 使用官方Go镜像作为构建环境
FROM golang:1.18-alpine AS builder
 
# 设置工作目录
WORKDIR /app
 
# 复制go模块依赖
COPY go.mod .
COPY go.sum .
RUN go mod download
 
# 复制源代码
COPY . .
 
# 编译Go程序,生成静态链接的二进制文件
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o myapp .
 
# 创建运行Go程序的最小镜像
FROM alpine
 
# 将编译好的二进制文件复制到最终镜像中
COPY --from=builder /app/myapp /myapp
 
# 设置容器启动时执行的命令
ENTRYPOINT ["/myapp"]
将此Dockerfile放在你的Go项目目录中。

在包含Dockerfile的目录中,运行以下命令来构建Docker镜像:

docker build -t mygoapp:latest .
构建完成后,运行以下命令来启动容器:

docker run --name mygoapp -d -p 8080:8080 mygoapp:latest
确保你的Go程序有一个main包,并且有一个入口函数main()。这个Dockerfile使用了多阶段构建,首先使用Go的官方镜像来编译你的Go程序,然后创建一个最小的Alpine Linux镜像来运行编译好的二进制文件。

  

标签:go,myapp,Go,镜像,Docker,Dockerfile
From: https://www.cnblogs.com/jason-zhao/p/18197936

相关文章

  • node加速镜像源 管理工具nrm安装使用
     我们在开发node.js的时候,经常会遇到某些包无法下载,或者下载太慢,还有需要加载我们自己是有源中的包的问题,今天推荐给大家的这款nrm镜像源管理工具就是解决这类问题的. 安装方法也很简单,执行npminstallnrm-g就可以安装#安装nrmnpminstallnrm-g#添......
  • kubernetes 源码开启 go work 模式
    为了更方便进行go项目多模块管理,go社区在gomod之后引入了go workspaces模式。kubernetes社区最近在 kubernetes源码中启用 go workspaces模式。go提出 go workspaces模式的issue,和社区 thockin 的关注 cmd/go:supportvendoringinworkspacemode·Is......
  • docker debug记录
    Error1:failedtoregisterlayer:open/data1/Installer/dockerInstallDir/docker/overlay2/5ee088aebf668f13b34c528c8009e67fe6aec5592f692dc5425c3e0d32bc4427/.tmp-committed2657031997:nosuchfileordirectory$dockersystemprune-a$systemctlstopdocker......
  • linux 按照docker容器
    安装前提条件Docker要求CentOS系统的内核版本高于3.10,首先验证你的服务器是否支持Docker!通过uname-r命令查看当前的内核版本`[root@localhosthome]#uname-r3.10.0-1160.el7.x86_64`可以看到我的服务器是4.18.0,是支持Docker的。第一步:检查并清除系统残余项,并安......
  • 解决jenkins构建时docker.command.not.found
    前提查看查看下面两个文件,如果宿主机没有,就不用跟着文档做了[root@localhost~]#ll/var/run/docker.socksrw-rw----.1rootdocker05月1613:37/var/run/docker.sock[root@localhost~]#[root@localhost~]#ll/usr/bin/docker-rwxr-xr-x.1rootroot39708368......
  • Docker下/var/lib/docker/overlay2清理
    查询镜像(Images)、容器(Containers)和本地卷(LocalVolumes)等空间使用大户的空间占用情况dockersystemdf#详细信息dockersystemdf-v清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)dockersystemprune #命令清理得更加......
  • Docker 部署Nacos
    1、创建Nacos目录mkdir/home/docker/nacos2、创建Nacos日志目录mkdir/home/docker/nacos/logs3、创建Nacos配置目录mkdir/home/docker/nacos/conf4、创建数据库/**Copyright1999-2018AlibabaGroupHoldingLtd.**LicensedundertheApacheLicense,Ver......
  • golang context 特点,和自己定义分类有什么区分
     context包的特点包括:1信号传递:取消信号:context提供了一个取消机制,允许一个父级goroutine在必要的时候通知其子级goroutines任务应该停止执行。 截止时间:可以设置一个截止时间,当超过这个时间时,上下文自动变为取消状态。 超时:类似截止时间,但通常基于从当前......
  • Django 自定义管理命令:从入门到高级
    title:Django自定义管理命令:从入门到高级date:2024/5/1618:34:29updated:2024/5/1618:34:29categories:后端开发tags:Django自定义命令入门教程高级技巧命令创建命令使用自定义管理第1章简介1.1 Django管理命令简介Django是一个流行的Python......
  • Docker 部署MinIO
    1、启动容器dockerrun-p9000:9000\-p9090:9090\--name=minio\--privileged=true\--restart=always\-e"MINIO_ROOT_USER=minio"\-e"MINIO_ROOT_PASSWORD=kun_minio&quo......