构建 python 应用容器:
构建 wheel 的多阶段构建:
FROM python:3 AS python-meirin
RUN useradd -m meirin \
&& mkdir -p /home/meirin/.local/bin \
&& chown -R meirin:meirin /home/meirin \
&& mkdir -p /usr/src \
&& chmod a+rw /usr/src
USER meirin
ENV PATH "/home/meirin/.local/bin:$PATH"
#-------------------------------------------------------------------------------
FROM python-meirin AS builder
WORKDIR /usr/src
RUN pip install --no-cache-dir build setuptools
# 把 python-app 目录替换为 /usr/src 的意思
COPY python-app/ /usr/src/
RUN python -m build --wheel
#-------------------------------------------------------------------------------
FROM python-meirin
LABEL maintainer="literal kernel"
COPY --from=builder /usr/src/dist/*.whl /usr/src
RUN pip install /usr/src/*.whl && rm -rf /usr/src/*
CMD [ "python", "-m", "meirin" ]
使用 pip install 直接安装
FROM python:3
COPY python-app/ /usr/src/
RUN useradd -m meirin \
&& mkdir -p /home/meirin/.local/bin \
&& chown -R meirin:meirin /home/meirin \
&& mkdir -p /usr/src \
&& chmod -R a+rw /usr/src
USER meirin
WORKDIR /home/meirin
ENV PATH "/home/meirin/.local/bin:$PATH"
RUN pip install /usr/src
USER root
RUN rm -rf /usr/src
USER meirin
CMD [ "meirin" ]