FROM ccr.ccs.tencentyun.com/gm-base/py3.8-buster:v1.0.1
RUN cat /etc/apt/sources.list
RUN sed -i s@/deb.debian.org/@/mirrors.aliyun.com/@g /etc/apt/sources.list
RUN cat /etc/apt/sources.list
RUN apt-get clean
RUN apt-get update
RUN apt-get install -y --no-install-recommends   \
    # 业务相关依赖和安装工具
    libjemalloc-dev \
    git \
    g++ \
    gcc \
    binutils \
    clang \
    cmake \
    coreutils \
    dpkg-dev \
    dpkg \
    findutils \
    libc-dev \
    libffi-dev \
    libtirpc-dev \
    make \
    ncurses-dev \
    pax-utils \
    tcl-dev \
    tk \
    tk-dev \
    python3-dev \
    librdkafka-dev \
    libxml2-dev \
    libxslt-dev \
    librdkafka-dev \
    libaio-dev \
    libffi-dev \
    gfortran \
    swig \
    liblapack-dev \
    musl-dev \
    && ln -s /usr/lib/x86_64-linux-musl/libc.so /lib/libc.musl-x86_64.so.1

# ENV LD_PRELOAD $LD_PRELOAD:/usr/lib/x86_64-linux-gnu/libjemalloc.so

WORKDIR /srv/apps/card/
ENV POETRY_VIRTUALENVS_IN_PROJECT=true \
       POETRY_NO_INTERACTION=1 \
       PYSETUP_PATH="/srv/apps/card" \
       VENV_PATH="/srv/apps/card/.venv"

# prepend poetry and venv to path
ENV PATH="$VENV_PATH/bin:$PATH"

# 提前安装 依赖, 使用 docker cache
COPY ./pyproject.toml ./poetry.lock /srv/apps/card/
RUN poetry install -v

COPY . .

RUN poetry run pip install -i https://pypi-1593408770345:241c0cbfa8437730ad982ece687b5a06e78dcf83@gengmei-pypi.pkg.coding.net/tob/pypi/simple gm-types -U
RUN poetry run pip install -i https://pypi-1593408770345:241c0cbfa8437730ad982ece687b5a06e78dcf83@gengmei-pypi.pkg.coding.net/tob/pypi/simple redis

RUN mkdir -p /data/log/card/app/
ENV GM_RPCD_MODE "deploy"
ENV RPCD_SETTINGS_MODULE "card.settings"

CMD poetry run gunicorn fastapi_rpcd.asgi:application -w 1 -k uvicorn.workers.UvicornWorker -b 0.0.0.0:8000 --worker-tmp-dir /dev/shm
