开发 Golang 项目的 Docker 化案例

2024-06-22 07:04

本文主要是介绍开发 Golang 项目的 Docker 化案例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

开发 Golang 项目的 Docker 化案例

在这个案例中,我们将展示如何使用 Docker 容器化一个简单的 Golang Web 应用。我们将创建一个基于 Go 的 Hello World 应用,并使用 Docker 和 Docker Compose 管理容器化环境。

1. 创建 Golang Web 应用

首先,创建一个简单的 Golang Web 应用,用于展示一个简单的 Hello World 页面。

main.go:

package mainimport ("fmt""net/http"
)func helloHandler(w http.ResponseWriter, r *http.Request) {fmt.Fprintf(w, "Hello, Dockerized Go App!")
}func main() {http.HandleFunc("/", helloHandler)fmt.Println("Server is running on port 8080...")http.ListenAndServe(":8080", nil)
}
2. 编写 Dockerfile

创建 Dockerfile,用于构建 Docker 镜像并运行我们的 Golang 应用。

Dockerfile:

# 使用官方 Golang 运行时镜像
FROM golang:1.18-alpine# 设置工作目录
WORKDIR /app# 复制当前目录的内容到容器的工作目录
COPY . .# 构建 Go 应用
RUN go build -o main .# 暴露应用运行的端口
EXPOSE 8080# 运行 Go 应用
CMD ["./main"]
3. 编写 Docker Compose 配置文件

使用 Docker Compose 管理容器服务,包括我们的 Golang 应用。

docker-compose.yml:

version: '3'
services:web:build: .ports:- "8080:8080"
4. 构建和运行 Docker 容器

现在,我们可以构建和运行我们的 Docker 容器。

在项目根目录下执行以下命令:

# 构建 Docker 镜像
docker-compose build# 启动服务
docker-compose up
5. 访问应用程序

Golang 应用将在 http://localhost:8080 上运行,通过浏览器或 curl 访问可以看到 “Hello, Dockerized Go App!” 的输出。

通过这个案例,我们学会了如何使用 Docker 和 Docker Compose 来容器化一个简单的 Golang Web 应用。

扩展部分:添加 Nginx 反向代理

为了展示如何将多个容器组合在一起工作,我们可以添加一个 Nginx 容器作为反向代理服务器。

1. 编写 Nginx 配置文件

创建一个简单的 Nginx 配置文件,将请求代理到 Golang 应用。

nginx.conf:

server {listen 80;server_name localhost;location / {proxy_pass http://web:8080;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}
2. 更新 Docker Compose 配置文件

使用 Docker Compose 管理容器服务,包括我们的 Golang 应用和 Nginx 服务。

docker-compose.yml:

version: '3'
services:web:build: .ports:- "8080:8080"nginx:image: nginx:latestports:- "80:80"volumes:- ./nginx.conf:/etc/nginx/nginx.conf:rodepends_on:- web
3. 构建和运行 Docker 容器

现在,我们可以构建和运行我们的 Docker 容器。

在项目根目录下执行以下命令:

# 构建 Docker 镜像
docker-compose build# 启动服务
docker-compose up
4. 访问应用程序

Golang 应用将在 http://localhost:80 上通过 Nginx 反向代理运行,通过浏览器或 curl 访问可以看到 “Hello, Dockerized Go App!” 的输出。

通过这个扩展案例,我们学会了如何使用 Docker 和 Docker Compose 来容器化一个简单的 Golang Web 应用,并通过 Nginx 实现反向代理,希望这种组合可以帮助读者理解多容器应用场景的基本概念和工作原理。

这篇关于开发 Golang 项目的 Docker 化案例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1083610

相关文章

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

MyBatis分页查询实战案例完整流程

《MyBatis分页查询实战案例完整流程》MyBatis是一个强大的Java持久层框架,支持自定义SQL和高级映射,本案例以员工工资信息管理为例,详细讲解如何在IDEA中使用MyBatis结合Page... 目录1. MyBATis框架简介2. 分页查询原理与应用场景2.1 分页查询的基本原理2.1.1 分

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Three.js构建一个 3D 商品展示空间完整实战项目

《Three.js构建一个3D商品展示空间完整实战项目》Three.js是一个强大的JavaScript库,专用于在Web浏览器中创建3D图形,:本文主要介绍Three.js构建一个3D商品展... 目录引言项目核心技术1. 项目架构与资源组织2. 多模型切换、交互热点绑定3. 移动端适配与帧率优化4. 可

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

sky-take-out项目中Redis的使用示例详解

《sky-take-out项目中Redis的使用示例详解》SpringCache是Spring的缓存抽象层,通过注解简化缓存管理,支持Redis等提供者,适用于方法结果缓存、更新和删除操作,但无法实现... 目录Spring Cache主要特性核心注解1.@Cacheable2.@CachePut3.@Ca

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

Java 正则表达式的使用实战案例

《Java正则表达式的使用实战案例》本文详细介绍了Java正则表达式的使用方法,涵盖语法细节、核心类方法、高级特性及实战案例,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录一、正则表达式语法详解1. 基础字符匹配2. 字符类([]定义)3. 量词(控制匹配次数)4. 边