在Docker容器中运行一个Go应用程序,可以通过以下步骤进行:
- 编写Go应用程序:
go
package main
import (
"fmt"
"net/http"
)
func hello(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "Hello World!")
}
func main() {
http.HandleFunc("/", hello)
http.ListenAndServe(":8000", nil)
}
- 构建Dockerfile:
Dockerfile
FROM golang:1.15-alpine as builder
WORKDIR /app
COPY . .
RUN go build -o main .
FROM alpine:3.12
WORKDIR /app
COPY --from=builder /app/main .
ENTRYPOINT ["./main"]
此Dockerfile采用多阶段构建。第一阶段基于golang:1.15-alpine构建应用程序,第二阶段基于alpine:3.12仅复制构建好的二进制文件,指定其为入口点。
- 构建镜像:
docker build -t go-app .
- 运行容器:
docker run -p 8000:8000 -d go-app
此命令在后台运行容器,并映射8000端口。
- 访问应用:
打开http://localhost:8000可以访问Go应用。 - 在Docker Compose中定义应用:
yaml
version: '3'
services:
go-app:
build: .
image: go-app
ports:
- "8000:8000"
docker-compose up
可以一键启动应用。