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