golang使用DockerFile正确用法指南

2024-04-18 0 294
目录
  • 问题背景
  • 编写Dockerfile
  • 创建镜像
  • 运行容器
  • 附:Go 使用Dockerfile构建项目 mod 报错处理
    • 1.情景
    • 2.一开始的Dockerfile
    • 3.解决方案
    • 4.修改后结果
  • 总结

    问题背景

    今天寸铁想让编写好的go程序在docker上面跑,要想实现这样的效果,就需要用到今天的主角:Docker File,那怎么使用DockerFile呢?

    那具体怎么做呢?其实很简单,不过网上的博客的一些命令笔者实操过,发现不够完善!

    小伙伴们要想实现,看笔者的正确食用指南即可,减少大量踩坑的时间。

    编写Dockerfile

    在你要运行到容器的程序所在的文件夹创建Dockerfile之后复制如下内容到创建的文件中。

    FROM golang:latest

    # 设置工作目录
    WORKDIR /app

    # 复制 Go 程序源代码到工作目录
    COPY dockerUper.go .

    # 编译 Go 程序
    RUN go build -o dockerUper dockerUper.go

    # 运行 Go 程序
    CMD [\”sh\”, \”-c\”, \”./dockerUper\”]

    dockerUper 替换为具体你编写的文件名

    文件夹的结构如下:

    golang使用DockerFile正确用法指南

    创建镜像

    使用如下命令创建docker镜像

    docker build -t my-golang-app .

    这里创建的镜像名为my-golang-app具体替换为你的命名

    golang使用DockerFile正确用法指南

    运行容器

    使用如下命令运行Docker镜像的容器

    docker run –name mycontainer-12 my-golang-app

    容器名为mycontainer-12,镜像名为my-golang-app。具体可以根据你的实际情况进行修改。注意:run之后 下次的容器名不能重复!!!

    golang使用DockerFile正确用法指南

    运行结果如下:

    golang使用DockerFile正确用法指南

    这样就运行容器成功啦!

    附:Go 使用Dockerfile构建项目 mod 报错处理

    1.情景

    正在使用Dockerfile构建Go项目镜像的时候,遭遇到了executor failed running [/bin/sh -c go mod tidy]: exit code: 2以及ERROR [internal] load metadata for docker.io/library/golang:1.19报错,经过一番折腾,终于解决,记录一下!

    2.一开始的Dockerfile

    FROM golang:alpine as builder

    WORKDIR /go/web-api

    # 为我们的镜像设置必要的环境变量
    ENV GO111MODULE=on
    ENV CGO_ENABLED=0
    ENV GOPROXY=https://goproxy.cn,direct
    ENV GOOS=linux
    ENV GOARCH=amd64

    COPY . .

    RUN go mod tidy
    RUN go build -o server .

    3.解决方案

    3.1第一个报错executor failed running [/bin/sh -c go mod tidy]: exit code: 2

    报错内容

    ——
    > [builder 4/5] RUN go mod tidy:
    #8 0.275 go: unknown subcommand \”mod\”
    #8 0.275 Run \’go help\’ for usage.
    ——

    按照提示信息显示,找不到命令.怀疑是golang:alpine低于当前项目的Go版本(当前项目1.19).于是尝试更换成golang:1.19-alpine3.15,这次没有mod的报错了,但是有新的报错.

    3.2第二个报错ERROR [internal] load metadata for docker.io/library/golang:1.19

    ——
    > [internal] load metadata for docker.io/library/golang:1.19-alpine3.15:
    ——
    failed to solve with frontend dockerfile.v0: failed to create LLB definition: unexpected status code [manifests 1.19-alpine3.15]: 400 Bad Request

    好像是镜像问题,随即查阅一番资料,得到结论,原来是Docker Desktop的设置问题,需要将setting->Docker Engine的json配置文件中的

    \”features\”: {
    \”buildkit\”: true
    },

    修改为false即可.

    4.修改后结果

    修改后重新运行docker build -t xxx/xxx .命令成功生成镜像.希望能帮助到有相同问题的小伙伴^_^

    总结

    到此这篇关于golang使用DockerFile的文章就介绍到这了,更多相关golang使用DockerFile内容请搜索悠久资源网以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源网!

    您可能感兴趣的文章:

    • 轻松构建Go应用的Dockerfile

    收藏 (0) 打赏

    感谢您的支持,我会继续努力的!

    打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
    点赞 (0)

    悠久资源 Golang golang使用DockerFile正确用法指南 https://www.u-9.cn/jiaoben/golang/187016.html

    常见问题

    相关文章

    发表评论
    暂无评论
    官方客服团队

    为您解决烦忧 - 24小时在线 专业服务