构建HTTPS服务镜像

1、创建目录

root@localhost \~\]# mkdir demo5 \[root@localhost \~\]# cd demo5 2、编写main.go \[root@localhost demo5\]# vim main.go 文件内容如下: package main import ( "log" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r \*http.Request) { w.Write(\[\]byte("Hello, HTTPS!\\n")) }) log.Println("Server running on https://localhost:443") err := http.ListenAndServeTLS(":443", "/etc/ssl/certs/server.crt", "/etc/ssl/private/server.key", nil) if err != nil { log.Fatal("ListenAndServeTLS: ", err) } } 3、编写go.mod \[root@localhost demo5\]# vim go.mod 文件内容如下: ``` module github.com/yourusername/go-https-server ​ go 1.21 ​ require (        golang.org/x/crypto v0.14.0 // indirect        golang.org/x/net v0.17.0 // indirect        golang.org/x/sys v0.13.0 // indirect ) ``` 4、编写go.sum ``` [root@localhost demo5]# vim go.sum ``` 文件内容如下: ``` golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= ``` 5、编写Dockerfile ``` [root@localhost demo5]# vim Dockerfile ``` 文件内容如下:: ``` FROM golang:1.21-alpine AS builder ​ RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories ENV GOPROXY=https://goproxy.cn,direct ​ RUN apk add --no-cache git make openssl ​ WORKDIR /app ​ COPY go.mod go.sum . RUN go mod download ​ COPY . . ​ RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-w -s" -o app ​ RUN openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes \   -keyout server.key -out server.crt -subj "/CN=localhost" \   -addext "subjectAltName=DNS:localhost,IP:127.0.0.1" ​ ​ FROM alpine:3.23 ​ RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories ​ RUN apk add --no-cache ca-certificates tzdata ​ RUN addgroup -S appgroup && adduser -S appuser -G appgroup ​ COPY --from=builder /app/app /usr/local/bin/app COPY --from=builder /app/server.crt /etc/ssl/certs/ COPY --from=builder /app/server.key /etc/ssl/private/ ​ RUN chown appuser:appgroup /usr/local/bin/app && \   chmod 755 /usr/local/bin/app && \   chmod 644 /etc/ssl/certs/server.crt && \   chmod 644 /etc/ssl/private/server.key ​ WORKDIR /home/appuser USER appuser ​ EXPOSE 443 ​ HEALTHCHECK --interval=30s --timeout=3s \   CMD wget --no-check-certificate -qO- https://localhost/healthz || exit 1 ​ ENTRYPOINT ["app", "--cert", "/etc/ssl/certs/server.crt", "--key", "/etc/ssl/private/server.key"] ``` 6、编写.dockerignore ``` [root@localhost demo5]# vim .dockerignore ``` 文件内容如下: ``` Dockerfile ``` 7、目录结构 ``` [root@localhost demo5]# ls -a . .. Dockerfile .dockerignore go.mod go.sum main.go ``` 8、构建镜像 ``` [root@localhost demo5]# docker build -t https-server:1.0 . ``` 9、查看镜像 ``` [root@localhost demo5]# docker images   ``` 10、运行容器 ``` [root@localhost demo5]# docker run --rm --name hs -d -p 443:443 https-server:1.0 [root@localhost demo5]# docker ps ``` 11、访问测试 ``` [root@localhost demo5]# curl -k https://localhost Hello, HTTPS! ```

相关推荐
智能运维指南1 天前
2026 年企业IT运维监控系统选型指南:全栈可观测平台对比与落地建议
运维
sdm0704271 天前
进程间通信
linux·运维·服务器
蚰蜒螟1 天前
Linux内核启动(init)与程序执行(execve)深度解析:从kernel_init到load_elf_binary
linux·运维·服务器
thethefighter1 天前
信创综合档案管理系统单机版部署与使用
linux·银河麒麟·档案管理系统·单机版·nhdeep·信创版·综合档案管理系统
hhb_6181 天前
Go高性能并发编程实战与底层原理剖析
运维·网络·golang
道清茗1 天前
【RH294知识点汇总】第 6 章 《 管理复杂的 Play 和 Playbook 》常见问题
linux·服务器·网络
哼?~1 天前
序列化与反序列化
linux·网络
带娃的IT创业者1 天前
Claude Code Routines 深度解析:重新定义 AI 辅助编程的工作流自动化
运维·人工智能·自动化·ai编程·工作流·anthropic·claude code
broadview_java1 天前
搬瓦工修改SSH端口
运维·网络·ssh
嵌入式×边缘AI:打怪升级日志1 天前
从硬编码按键驱动到 Linux Platform 设备树驱动:逐行解剖与融会贯通
linux·运维·服务器