Docker
Docker
Section titled “Docker”go-zero services compile to a single static binary, giving you minimal Docker images.
Dockerfile
Section titled “Dockerfile”FROM golang:1.22-alpine AS builderWORKDIR /appCOPY go.mod go.sum ./RUN go mod downloadCOPY . .RUN CGO_ENABLED=0 GOOS=linux go build -o service .
FROM alpine:3.20RUN apk --no-cache add ca-certificates tzdataWORKDIR /appCOPY --from=builder /app/service .COPY etc/ ./etc/EXPOSE 8888CMD ["./service", "-f", "etc/app.yaml"]Build & Run
Section titled “Build & Run”docker build -t myapp:latest .docker run -p 8888:8888 myapp:latestDocker Compose
Section titled “Docker Compose”services: api: build: ./api ports: ["8888:8888"] depends_on: [mysql, redis, etcd]
mysql: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: myapp volumes: [mysql_data:/var/lib/mysql]
redis: image: redis:7-alpine
etcd: image: bitnami/etcd:latest environment: ALLOW_NONE_AUTHENTICATION: "yes"
volumes: mysql_data:docker compose up -dHealth Check
Section titled “Health Check”HEALTHCHECK --interval=10s --timeout=3s \ CMD wget -qO- http://localhost:8888/healthz || exit 1