# 构建阶段
FROM golang:alpine AS builder

WORKDIR /build

# 复制整个项目
COPY . .

# 设置 Go 环境
ENV GO111MODULE=on GOPROXY=https://goproxy.cn,direct

# 构建配置管理服务器
WORKDIR /build/override-web/config
RUN go mod download
RUN CGO_ENABLED=0 go build -ldflags="-w -s" -o config-server .

# 构建原始 override 应用
WORKDIR /build/override-web/override
RUN go mod download
RUN CGO_ENABLED=0 go build -ldflags="-w -s" -o override .

# 最终镜像
FROM alpine:latest

RUN apk --no-cache add ca-certificates

# 从构建阶段复制编译好的二进制文件
COPY --from=builder /build/override-web/config/config-server /usr/local/bin/
COPY --from=builder /build/override-web/override/override /usr/local/bin/

# 复制配置文件和静态文件
COPY override-web/config/web /app/web
COPY config.json.example /app/config.json

WORKDIR /app
VOLUME /app

# 暴露原始应用和配置管理服务器的端口
EXPOSE 8181 9090

# 使用 shell 形式的 CMD，这样可以使用环境变量并同时运行两个应用
CMD ["/bin/sh", "-c", "/usr/local/bin/config-server -app /usr/local/bin/override -config /app/config.json & /usr/local/bin/override"]