首页 > 其他分享 >如何将Go项目制作为docker镜像

如何将Go项目制作为docker镜像

时间:2024-09-10 18:24:14浏览次数:16  
标签:8080 构建 Go 镜像 docker Dockerfile Docker

在Go项目中,将应用打包成Docker镜像是一种常见的做法,这有助于应用的部署和环境的一致性。下面,我将分步骤介绍如何创建一个Dockerfile来打包Go应用,并简要介绍如何使用goctl工具(尽管goctl主要用于生成Go的RPC代码,而不是直接用于Docker镜像的构建)。

1. 编写Dockerfile

Dockerfile是构建Docker镜像的脚本。以下是一个简单的Dockerfile示例,用于构建Go应用的Docker镜像:

# 使用官方Go镜像作为基础镜像
FROM golang:1.23-alpine AS builder

# 设置工作目录
WORKDIR /app

# 将本地代码复制到镜像中的工作目录
COPY . .

# 构建Go应用
RUN go build -o myapp .

# 使用Alpine镜像作为基础镜像,用于减小最终镜像的大小
FROM alpine:latest

# 将构建好的应用从builder阶段复制到当前镜像
COPY --from=builder /app/myapp /usr/local/bin/myapp

# 设置环境变量
ENV PORT 8080

# 容器启动时执行的命令
ENTRYPOINT ["/usr/local/bin/myapp"]

# 暴露端口
EXPOSE 8080

这个Dockerfile首先从一个Go环境镜像开始,将你的代码复制进去,并执行构建。然后,它切换到一个小型的Alpine镜像,并将构建好的应用从第一个镜像阶段复制过来。这样可以减小最终镜像的大小。

注意:对于需要加载静态文件的情况,请在Dockerfile文件中加入如下命令:

COPY --from=builder /app/myapp/templates/index.html /usr/local/bin/myapp/templates/index.html

2. 构建Docker镜像

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

docker build -t my-go-app .

这里,-t my-go-app 指定了镜像的标签(name:tag),. 表示Dockerfile位于当前目录。

3. 运行Docker容器

构建完镜像后,你可以使用以下命令来运行一个容器:

docker run -d -p 8080:8080 my-go-app

这里,-d 表示以守护进程模式运行容器,-p 8080:8080 将容器的8080端口映射到宿主机的8080端口。

标签:8080,构建,Go,镜像,docker,Dockerfile,Docker
From: https://www.cnblogs.com/you-fish/p/18406918

相关文章

  • Goby 漏洞发布|(CVE-2024-45195)Apache OFBiz /viewdatafile 代码执行漏洞【已复现】
    漏洞名称:ApacheOFBiz/viewdatafile代码执行漏洞(CVE-2024-45195)EnglishName:ApacheOFBiz/viewdatafileCodeExecutionVulnerability(CVE-2024-45195)CVSScore: 8.0漏洞描述:ApacheOFBiz是一个开源企业资源规划(ERP)系统。它提供了一套企业应用程序,集成并自动化企业的......
  • docker-compose部署MySQL高可用工具orchestrator
    主要对一个MySQL主从架构部署orchestartor进行高可用验证,orchestrator部署在主从架构的从节点上,当然最好是部署在其他机器上,后端数据库采用的直接是MySQL的从库,所以没有创建orchestrator的后端数据库的流程。创建yaml文件mkidr/opt/orchecd/opt/orchevimdocker-comp......
  • 安装Docker
    卸载旧版yumremovedocker\docker-client\docker-common\docker-latest\docker-latest-logrotate\docker-logrotate\docker-engine配置Docker的yum库首先要安装一个yum工具yuminstall-yyum-utils安装成功后,执行命令,配置Dock......
  • docker镜像构建libreoffice转换文件
    具体需求: 根据Libreoffice最新版本,创建一个容器环境,用于文件不同类型的转换#使用阿里云的Python镜像FROMdockerpull.com/python:3.9-slim#设置工作目录WORKDIR/app#更新debian系统的APT源列表为阿里ARGDEBIAN_FRONTEND=noninteractiveRUNapt-getclean&&\......
  • docker
    Docker的基础原理SaaS提供给客户的服务是运营商运行在云计算基础设施上的应用程序,用户可以在各种设备上通过过客户端界面访问,如浏览器。消费者不需要管理或控制任何云计算基础设施,包括网络、服务器、操作系统、存储等等;平时使用的邮件服务器,即属于SaaS服务。PaaS提供给消......
  • Docker
    容器化技术解决了一个关键问题:它将软件程序和运行的基础环境分开。可移植性;占地小;共享bin和libDocker本身不是容器,它是创建容器的工具,是应用容器引擎。Docker镜像是一个特殊的文件系统。它除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些......
  • 全球知名机构Sectigo到访沃通WoTrus共商合作发展
    9月5日,全球知名机构Sectigo的企业代表到访沃通公司深圳总部参观访问,就数字证书及相关产品方案在中国市场的进一步合作发展,与沃通WoTrus的相关负责人进行深度交流。Sectigo(原Comodo)成立于1998年,是全球优秀的网络安全服务提供商和数字证书颁发机构,拥有超过25年的数字证书行业经验,迄今......
  • 基于django+vueblockly少儿编程在线学习网站【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,编程教育逐渐从高等教育向基础教育渗透,成为培养未来社会创新人才的重要途径。少儿编程作为这一趋势的前沿阵地,其重......
  • 基于django+vueATM自动取款机系统【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展和金融服务的日益普及,自动取款机(ATM)系统已成为现代银行服务不可或缺的一部分。ATM系统不仅极大地提升了金融交易的......
  • 推荐一款好用的golang修复无效json的库:JSONRepair
    简单来说,就是可以将错误格式(非标准)的json修正,如下图所示: 我的json明显不是标准的json格式,是不能被解析的: 但是JSONRepair库也能修复。 github地址:https://github.com/kaptinlin/jsonrepair使用也非常简单:1、安装:gogetgithub.com/kaptinlin/jsonrepair2......