docker使用教程之部署第一个go项目

一、go代码

go 复制代码
package main

import (
	"fmt"
	"net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, "Hello Docker!")
}

func main() {
	http.HandleFunc("/", handler)
	fmt.Println("Server running on http://127.0.0.1:8080")
	http.ListenAndServe(":8080", nil)
}

二、Dockerfile文件

bash 复制代码
# 使用官方 Go 镜像作为构建环境


FROM golang:1.25.5 AS builder

# 设置代理
#ARG HTTP_PROXY=http://192.168.1.163:7890
#ARG HTTPS_PROXY=http://192.168.1.163:7890
#ENV HTTP_PROXY=${HTTP_PROXY}
#ENV HTTPS_PROXY=${HTTPS_PROXY}


# 设置工作目录
WORKDIR /app

# 复制 go.mod 和 go.sum,先下载依赖
#COPY ../go.mod go.sum ./
COPY go.mod ./
RUN go mod download

# 复制项目代码
COPY . .

# 编译 Go 程序,生成可执行文件 app   *注意:Go 程序 + Alpine = 必须 CGO_ENABLED=0
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o app


# 使用最小镜像运行程序
FROM alpine:3.17
WORKDIR /app

# 复制编译好的可执行文件
COPY --from=builder /app/app .

# 容器启动时执行 app
CMD ["./app"]

# 容器暴露端口
EXPOSE 8080

三、执行命令

创建go项目镜像,镜像名:my_hello_world

bash 复制代码
docker build -t my_hello_world .

查看镜像列表

bash 复制代码
docker images

创建项目镜像的容器,并运行,-d后台运行,-p端口容器:本机

bash 复制代码
docker run -d  -p 8081:8080 a0fabfbbaf94(镜像id) 

查看容器列表

bash 复制代码
docker ps   # 查看在运行的
docker ps   # 查看创建的

四、其他命令

bash 复制代码
docker start 容器id  # 开始容器
docker exec -it 容器id  /bin/sh # 进入容器
docker stop 容器id  # 停止容器
docker rm 容器id  # 删除容器

docker rmi 镜像id  # 删除镜像
相关推荐
.冰块.1 小时前
Docker 镜像深度学习:分层 Copy‑on‑Write、Dockerfile 语法、Harbor 私有仓库实操
docker·容器·harbor·镜像·dockerfile·images
szephyr1 小时前
Docker 镜像瘦身实战:从 1.2GB 压到 85MB 的完整过程
docker·容器·部署·多阶段构建·镜像优化
小马同学-1 小时前
Containerd入门:架构原理与安装部署
容器·containerd
溪语流沙3 小时前
Django + Vue电商项目第001讲:开篇|注册登录加增删改查,那不是电商
redis·python·mysql·docker·typescript·django·vue
金金计较.4 小时前
Go语言-4
开发语言·golang
一直在努力学习的菜鸟5 小时前
Docker Info 详细解析(Rocky Linux 8.10 / Docker 29.8.1)
docker
小马同学-5 小时前
crictl实战:K8s容器运行时排障工具
容器·k8s·crictl
逐流人6 小时前
Containerd容器管理实战:从架构原理到nerdctlcrictl工具链
linux·运维·云原生·容器·云计算·containerd
AlfredZhao6 小时前
Docker 删除 none 镜像:一次真实的清理记录
docker
bosins15 小时前
WSL2 启动即崩溃?调整超时参数解决 Docker 阻塞问题
linux·docker·wsl