Go docker-compose redis mongo 基础服务的编排

9 min read
version: '3'
services:
  api:
    build: .
    ports:
      - 8000:8000
    depends_on:
      - mongo
      - redis
    networks:
      - backend

  mongo:
    container_name: mongo-server
    build: ./dev/mongo/.
    volumes:
      - ./data:/data/db
    networks:
      - backend

  redis:
    container_name: redis-server
    image: redis
    networks:
      - backend

networks:
  backend:
  • 使用内部网络 backend
  • Redis,mongo容器均使用默认端口,不对外暴露端口,在程序内部直接使用服务替代具体的服务地址
  • mongo 数据持久化到本地

Go的dockerfile

FROM golang:latest
# 配置 GOPROXY 环境变量
export GOPROXY=https://goproxy.io,direct
ENV GO111MODULE=on
WORKDIR /app
COPY go.mod .
COPY go.sum .
RUN go mod download
COPY . .
RUN go build -o api .
ENTRYPOINT ["/app/api"]