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  # 删除镜像
相关推荐
姜鱼问生10 小时前
docker exec 排查容器问题:从日志到进程
运维·网络·数据库·docker·容器
人生百态,人生如梦11 小时前
Ubuntu在低版本下使用ccswitch+claudecode(CCSwitch+Docker+Claude)连调教程
linux·ubuntu·docker·claudecode·ccswitch
程序员老赵11 小时前
Docker 部署 OpenViking:轻松搭建 AI Agent 上下文数据库平台
docker·开源·agent
ttwuai12 小时前
Go后台管理系统开源项目有哪些?如何按交付形态筛掉不合适的仓库
开发语言·golang·开源
吴声子夜歌12 小时前
Docker入门与实战——高级镜像构建
docker
小匠石钧知12 小时前
07_在k8s集群中安装ingress-nginx
nginx·容器·kubernetes·ingress
报错小能手12 小时前
GO面试题 Go基础面试题
golang
坐看风云变幻13 小时前
Betaflight 开发环境搭建保姆级教程(Ubuntu / Windows+WSL / Docker 三方案 + 官方网址大全)
windows·ubuntu·docker·无人机·飞控·betaflight
零基础12313 小时前
Docker 部署实战:从入门到精通
docker·容器
皓月盈江13 小时前
Go读写TXT文件
开发语言·后端·golang·go·读写txt文件·bufio·go读写txt