Golang在Ubuntu上如何使用Docker
1. 安装Docker on Ubuntu
在Ubuntu上使用Docker容器化Golang应用的第一步是安装Docker。打开终端,执行以下命令:
sudo apt update
sudo apt install docker.io -y
sudo systemctl start docker
sudo systemctl enable docker
安装完成后,通过docker --version
验证安装是否成功(应输出Docker版本信息)。
2. 创建Golang项目
创建一个新目录作为项目根目录,并进入该目录:
mkdir my-golang-app &
&
cd my-golang-app
创建一个简单的main.go
文件(以HTTP服务器为例):
package main
import (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, World!")
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
保存文件后,可通过go run main.go
在本地运行测试(应输出`Hello, World!”)。
3. 编写Dockerfile
在项目根目录下创建Dockerfile
(无文件扩展名),内容如下(推荐使用多阶段构建优化镜像大小):
# 构建阶段:使用官方Golang镜像(带版本号,如1.23-alpine轻量版)
FROM golang:1.23-alpine AS builder
WORKDIR /app
# 复制go.mod和go.sum文件(提前下载依赖,利用Docker缓存)
COPY go.mod go.sum ./
RUN go mod download
# 复制项目源代码
COPY . .
# 编译应用(输出二进制文件到/app目录)
RUN go build -o my-golang-app .
# 最终阶段:使用scratch(无操作系统)或alpine(极小镜像)作为基础镜像
FROM alpine:latest
WORKDIR /root/
# 从构建阶段复制编译好的二进制文件
COPY --from=builder /app/my-golang-app .
# 暴露应用端口(若需外部访问)
EXPOSE 8080
# 定义容器启动命令
CMD ["./my-golang-app"]
说明:
- 多阶段构建:第一阶段使用
golang
镜像编译代码,第二阶段使用alpine
镜像运行,大幅减小最终镜像体积(从几百MB降至几MB)。 go.mod
和go.sum
提前复制:利用Docker缓存机制,避免每次修改代码都重新下载依赖。
4. 构建Docker镜像
在项目根目录下执行以下命令,构建Docker镜像(-t
指定镜像名称,.
表示Dockerfile在当前目录):
docker build -t my-golang-app .
构建过程中,终端会显示每一阶段的执行日志(如下载依赖、编译代码)。构建成功后,通过docker images
查看镜像列表(应包含my-golang-app
)。
5. 运行Docker容器
使用以下命令运行容器(-p
将容器的8080端口映射到主机的8080端口,--name
指定容器名称):
docker run -d -p 8080:8080 --name my-golang-container my-golang-app
参数说明:
-d
:后台运行容器(守护进程模式)。-p 8080:8080
:将主机的8080端口映射到容器的8080端口(外部通过localhost:8080
访问应用)。--name
:为容器指定易记的名称(便于后续管理)。
6. 验证部署
打开浏览器或使用curl
命令访问http://localhost:8080
,应看到输出Hello, World!”。若使用
curl`,终端会显示:
$ curl http://localhost:8080
Hello, World!
至此,Golang应用已成功通过Docker在Ubuntu上运行。
7. 常用Docker命令
- 查看运行中的容器:
docker ps
- 停止容器:
docker stop my-golang-container
- 启动已停止的容器:
docker start my-golang-container
- 删除容器:
docker rm my-golang-container
- 删除镜像:
docker rmi my-golang-app
- 查看容器日志:
docker logs my-golang-container
(用于调试)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Golang在Ubuntu上如何使用Docker
本文地址: https://pptw.com/jishu/730799.html