beancount-gs/lib/Dockerfile

50 lines
1.5 KiB
Docker
Raw Permalink Normal View History

# 第一阶段:构建阶段 python:3.12-alpine3.22
FROM python:3.12-alpine3.22 as builder
# 设置环境变量,防止 Python 创建 .pyc 文件
ENV PYTHONUNBUFFERED=1
# 替换为阿里云的镜像源,并安装必要的依赖
RUN echo "https://mirrors.aliyun.com/alpine/v3.15/main/" > /etc/apk/repositories && \
echo "https://mirrors.aliyun.com/alpine/v3.15/community/" >> /etc/apk/repositories && \
apk update && \
apk add --no-cache --virtual .build-deps \
gcc \
g++ \
musl-dev
# 设置工作目录
WORKDIR /app
# 创建虚拟环境
RUN python3 -m venv /app/venv
# 将 Beancount 源码压缩包复制到容器中
COPY beancount-3.2.0.tar.gz /app
# 解压 Beancount 源码到 /beancount 目录
RUN mkdir /beancount && \
tar -xzf /app/beancount-3.2.0.tar.gz -C /beancount --strip-components=1
# 激活虚拟环境并安装 Beancount
RUN /app/venv/bin/pip install --upgrade pip -i https://mirrors.aliyun.com/pypi/simple/ && \
/app/venv/bin/pip install /beancount -i https://mirrors.aliyun.com/pypi/simple/ && \
# 清理不必要的文件
rm -rf /app/beancount-3.2.0.tar.gz && \
find /app -name __pycache__ -exec rm -rf -v {} +
# 第二阶段:运行阶段
FROM python:3.12-alpine3.22
# 设置环境变量,防止 Python 创建 .pyc 文件
ENV PYTHONUNBUFFERED=1
# 设置工作目录
WORKDIR /app
# 从构建阶段复制虚拟环境到当前镜像
COPY --from=builder /app/venv /app/venv
# 将虚拟环境的 bin 目录添加到 PATH 环境变量
ENV PATH="/app/venv/bin:$PATH"