美文网首页
开发 Golang 项目的 Docker 化案例

开发 Golang 项目的 Docker 化案例

作者: 美味小鱼 | 来源:发表于2024-06-25 21:50 被阅读0次

开发 Golang 项目的 Docker 化案例

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

1. 创建 Golang Web 应用

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

main.go:

package main

import (
    "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:latest
    ports:
      - "80:80"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf:ro
    depends_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 实现反向代理,希望这种组合可以帮助读者理解多容器应用场景的基本概念和工作原理。

相关文章

  • Dockerfile for Alpine+Golang

    Dockerfile for Alpine+Golang 在开发环境,测试环境下使用Golang的Docker镜像...

  • 使用docker构建vim-golang开发环境

    使用docker构建vim-golang开发环境 原理 docker可以构建一个属于自己的开发环境容器,需要使用时...

  • Docker命令详解

    序 在上一篇基于Docker进行Golang开发文章中对Docker进行了安装,并对如何用Docker进行Gola...

  • Golang项目Bazel指北

    该文档主要介绍 Bazel 构建基本 golang 项目的案例, 主要了解在golang项目中如何使用bazel....

  • Docker基础入门

    Docker作为一种虚拟化容器技术,为项目的开发提供了统一的环境,为环境备份、迁移创造了条件。 前言 Docker...

  • docker golang 开发环境

    go 版本的不一致,依赖库不一致,导致编译失败;代码生成工具不一致,导致生成代码有问题;依赖工具缺失,导致测试不通...

  • docker运行python3.6+flask小记

    docker运行python3.6+flask小记 docker新手。 目的:开发运行多个web api项目的时候...

  • Docker 使用简介

    Docker 是使用 GoLang 开发的开源容器引擎,可以方便的打包开发好的应用,然后分发到任意 linux 主...

  • Docker

    简述 Docker是基于GoLang编写的,2013年推出。越来越多的厂商都开始用Docker作为基础设施自动化的...

  • 使用Docker初始化MySQL、Redis等

    简介:使用Docker初始化个人开发环境。目的:不影响本机整体环境,针对每个项目模拟出一套初始化环境,避免相互影响...

网友评论

      本文标题:开发 Golang 项目的 Docker 化案例

      本文链接:https://www.haomeiwen.com/subject/xemjcjtx.html