Docker部署 #
一、Docker基础 #
1.1 Dockerfile #
dockerfile
# 构建阶段
FROM golang:1.21-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -o main .
# 运行阶段
FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=builder /app/main .
EXPOSE 3000
CMD ["./main"]
1.2 构建镜像 #
bash
docker build -t my-fiber-app .
1.3 运行容器 #
bash
docker run -p 3000:3000 my-fiber-app
二、Docker Compose #
2.1 docker-compose.yml #
yaml
version: '3.8'
services:
app:
build: .
ports:
- "3000:3000"
environment:
- DB_HOST=db
- DB_PORT=5432
- DB_USER=postgres
- DB_PASSWORD=secret
- DB_NAME=myapp
depends_on:
- db
- redis
db:
image: postgres:15
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: secret
POSTGRES_DB: myapp
volumes:
- postgres_data:/var/lib/postgresql/data
ports:
- "5432:5432"
redis:
image: redis:7
ports:
- "6379:6379"
volumes:
postgres_data:
2.2 启动服务 #
bash
docker-compose up -d
三、多阶段构建 #
3.1 优化Dockerfile #
dockerfile
FROM golang:1.21-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-w -s" -o main .
FROM scratch
COPY --from=builder /app/main /main
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
EXPOSE 3000
ENTRYPOINT ["/main"]
四、总结 #
4.1 Docker部署要点 #
| 要点 | 说明 |
|---|---|
| Dockerfile | 定义镜像构建 |
| 多阶段构建 | 减小镜像大小 |
| Docker Compose | 多容器编排 |
| 环境变量 | 配置管理 |
4.2 下一步 #
现在你已经掌握了Docker部署,接下来让我们学习 生产环境配置,了解生产环境最佳实践!
最后更新:2026-03-28