Docker容器

go 开发了一个项目 如何使用docker 部署-icode9专业技术文章分享

本文主要是介绍go 开发了一个项目 如何使用docker 部署-icode9专业技术文章分享,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

使用 Docker 部署 Go 项目是一个很有效的方法,可以在不同的环境中保持一致性。以下是一个简单的步骤指南,教你如何使用 Docker 部署 Go 项目:

步骤 1:创建 Go 项目

假设你已有一个 Go 项目,项目结构如下:

/my-go-app
├── main.go
├── go.mod
└── go.sum

main.go 是你的主源代码文件,go.mod 和 go.sum 是 Go 模块的依赖管理文件。

步骤 2:编写 Dockerfile

在项目根目录下创建一个名为 Dockerfile 的文件,并添加以下内容:

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

# 设置工作目录
WORKDIR /app

# 将 go.mod 和 go.sum 复制到工作目录
COPY go.mod ./
COPY go.sum ./

# 下载 Go 依赖
RUN go mod download

# 将源代码复制到工作目录
COPY . .

# 编译 Go 应用
RUN go build -o my-go-app .

# 使用更小的基础镜像
FROM alpine:latest

# 创建一个非特权用户
RUN addgroup -S appgroup && adduser -S appuser -G appgroup

# 设置工作目录
WORKDIR /app

# 从编译阶段复制编译好的二进制文件
COPY --from=builder /app/my-go-app .

# 更改二进制文件的权限
RUN chown -R appuser:appgroup /app/my-go-app

# 切换到非特权用户
USER appuser

# 声明服务端口
EXPOSE 8080

# 运行命令
CMD ["./my-go-app"]

Docker

步骤 3:构建 Docker 镜像

在项目目录下打开终端,运行以下命令以构建 Docker 镜像:

docker build -t my-go-app .

Bash

这条命令会根据 Dockerfile 的定义构建一个名为 my-go-app 的 Docker 镜像。

步骤 4:运行 Docker 容器

构建完成后,您可以用以下命令运行容器:

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

Bash

上面的命令将容器的 8080 端口映射到宿主机的 8080 端口。你可以在浏览器中访问 http://localhost:8080 来测试你的应用。

步骤 5:管理 Docker 容器和镜像

  • 查看正在运行的容器:

    docker ps
    

    Bash
  • 停止容器:

    docker stop <container_id>
    

    Bash
  • 删除容器:

    docker rm <container_id>
    

    Bash
  • 查看镜像:

    docker images
    

    Bash
  • 删除镜像:

    docker rmi my-go-app
    

    Bash

额外:使用 Docker Compose(可选)

如果你的 Go 应用依赖于数据库或其他服务,你还可以考虑使用 Docker Compose。创建一个 docker-compose.yml 文件,定义服务和依赖。

例如:

version: '3'
services:
  my-go-app:
    build: .
    ports:
      - "8080:8080"
  database:
    image: postgres
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
      POSTGRES_DB: mydb

YAML

然后,可以使用以下命令启动所有服务:

docker-compose up --build

Bash

总结

这些步骤涵盖了如何使用 Docker 构建和部署一个简单的 Go 应用。根据你的项目需求,你可能需要根据具体情况调整 Dockerfile 或 Docker Compose 设置。希望这个指南能帮助你顺利部署你的 Go 项目!

标签: 来源:

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

这篇关于go 开发了一个项目 如何使用docker 部署-icode9专业技术文章分享的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!