|
|
|
FROM alpine/git as clone-stage |
|
WORKDIR /tmp |
|
RUN git clone https://github.com/saleor/saleor.git |
|
|
|
|
|
FROM python:3.12 AS build-python |
|
|
|
RUN apt-get -y update \ |
|
&& apt-get install -y gettext \ |
|
&& apt-get clean \ |
|
&& rm -rf /var/lib/apt/lists/* |
|
|
|
|
|
WORKDIR /app |
|
RUN --mount=type=cache,mode=0755,target=/root/.cache/pip pip install poetry==1.8.4 |
|
RUN poetry config virtualenvs.create false |
|
|
|
COPY --from=clone-stage /tmp/saleor/poetry.lock /tmp/saleor/pyproject.toml /app/ |
|
RUN --mount=type=cache,mode=0755,target=/root/.cache/pypoetry poetry install --no-root |
|
|
|
|
|
FROM python:3.12-slim |
|
|
|
RUN groupadd -r saleor && useradd -r -g saleor saleor |
|
|
|
|
|
RUN apt-get update \ |
|
&& apt-get install -y \ |
|
libffi8 \ |
|
libgdk-pixbuf2.0-0 \ |
|
liblcms2-2 \ |
|
libopenjp2-7 \ |
|
libssl3 \ |
|
libtiff6 \ |
|
libwebp7 \ |
|
libpq5 \ |
|
shared-mime-info \ |
|
mime-support \ |
|
&& apt-get clean \ |
|
&& rm -rf /var/lib/apt/lists/* |
|
|
|
RUN mkdir -p /app/media /app/static \ |
|
&& chown -R saleor:saleor /app/ |
|
|
|
COPY --from=build-python /usr/local/lib/python3.12/site-packages/ /usr/local/lib/python3.12/site-packages/ |
|
COPY --from=build-python /usr/local/bin/ /usr/local/bin/ |
|
COPY --from=clone-stage /tmp/saleor /app |
|
|
|
WORKDIR /app |
|
|
|
ARG STATIC_URL |
|
ENV STATIC_URL=${STATIC_URL:-/static/} |
|
RUN SECRET_KEY=dummy STATIC_URL=${STATIC_URL} python3 manage.py collectstatic --no-input |
|
|
|
EXPOSE 8000 |
|
ENV PYTHONUNBUFFERED=1 |
|
|
|
LABEL org.opencontainers.image.title="saleor/saleor" \ |
|
org.opencontainers.image.description="\ |
|
A modular, high performance, headless e-commerce platform built with Python, \ |
|
GraphQL, Django, and ReactJS." \ |
|
org.opencontainers.image.url="https://saleor.io/" \ |
|
org.opencontainers.image.source="https://github.com/saleor/saleor" \ |
|
org.opencontainers.image.authors="Saleor Commerce (https://saleor.io)" \ |
|
org.opencontainers.image.licenses="BSD 3" |
|
|
|
|
|
|
|
|
|
CMD ["gunicorn", "--bind", "0.0.0.0:7860", "--workers", "4", "--worker-class", "saleor.asgi.gunicorn_worker.UvicornWorker", "saleor.asgi:application"] |
|
|