56 lines
1.0 KiB
Docker
56 lines
1.0 KiB
Docker
# 构建 Go 服务
|
|
FROM golang:1.21-alpine AS go-builder
|
|
|
|
WORKDIR /app
|
|
|
|
# 安装必要的构建工具
|
|
RUN apk add --no-cache gcc musl-dev
|
|
|
|
# 复制 Go 项目文件
|
|
COPY . .
|
|
|
|
# 构建 Go 服务
|
|
RUN go build -o main ./main.go
|
|
|
|
# 构建 Python 服务
|
|
FROM python:3.11-slim
|
|
|
|
WORKDIR /app
|
|
|
|
# 安装必要的系统依赖
|
|
RUN apt-get update && apt-get install -y \
|
|
ca-certificates \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# 创建音频目录
|
|
RUN mkdir -p /app/audio
|
|
|
|
# 复制 Python 文件服务器
|
|
COPY file_server.py .
|
|
|
|
# 从 go-builder 阶段复制编译好的 Go 服务
|
|
COPY --from=go-builder /app/main .
|
|
|
|
# 复制配置文件(如果有的话)
|
|
COPY --from=go-builder /app/config.yaml .
|
|
|
|
# 设置环境变量
|
|
ENV PORT=8000
|
|
ENV GO_PORT=8080
|
|
|
|
# 创建启动脚本
|
|
RUN echo '#!/bin/bash\n\
|
|
# 启动 Go 服务\n\
|
|
./main &\n\
|
|
# 启动 Python 文件服务器\n\
|
|
python file_server.py -p $PORT\n\
|
|
' > /app/start.sh && chmod +x /app/start.sh
|
|
|
|
# 暴露端口
|
|
EXPOSE 8000 8080
|
|
|
|
# 设置工作目录
|
|
WORKDIR /app
|
|
|
|
# 启动服务
|
|
CMD ["/app/start.sh"] |