ADD file:0eae0dca665c7044bf242cb1fc92cb8ea744f5af2dd376a558c90bc47349aefe in / |
CMD ["bash"] |
ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
ENV LANG=C.UTF-8 |
/bin/sh -c set -eux; apt-get update; apt-get install -y --no-install-recommends ca-certificates netbase tzdata ; rm -rf /var/lib/apt/lists/* |
ENV GPG_KEY=A035C8C19219BA821ECEA86B64E628F8D684696D |
ENV PYTHON_VERSION=3.10.5 |
/bin/sh -c set -eux; savedAptMark="$(apt-mark showmanual)"; apt-get update; apt-get install -y --no-install-recommends dpkg-dev gcc gnupg dirmngr libbluetooth-dev libbz2-dev libc6-dev libexpat1-dev libffi-dev libgdbm-dev liblzma-dev libncursesw5-dev libreadline-dev libsqlite3-dev libssl-dev make tk-dev uuid-dev wget xz-utils zlib1g-dev ; wget -O python.tar.xz "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz"; wget -O python.tar.xz.asc "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz.asc"; GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$GPG_KEY"; gpg --batch --verify python.tar.xz.asc python.tar.xz; command -v gpgconf > /dev/null && gpgconf --kill all || :; rm -rf "$GNUPGHOME" python.tar.xz.asc; mkdir -p /usr/src/python; tar --extract --directory /usr/src/python --strip-components=1 --file python.tar.xz; rm python.tar.xz; cd /usr/src/python; gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; ./configure --build="$gnuArch" --enable-loadable-sqlite-extensions --enable-optimizations --enable-option-checking=fatal --enable-shared --with-lto --with-system-expat --without-ensurepip ; nproc="$(nproc)"; make -j "$nproc" LDFLAGS="-Wl,--strip-all" ; make install; cd /; rm -rf /usr/src/python; find /usr/local -depth \( \( -type d -a \( -name test -o -name tests -o -name idle_test \) \) -o \( -type f -a \( -name '*.pyc' -o -name '*.pyo' -o -name 'libpython*.a' \) \) \) -exec rm -rf '{}' + ; ldconfig; apt-mark auto '.*' > /dev/null; apt-mark manual $savedAptMark; find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' | awk '/=>/ { print $(NF-1) }' | sort -u | xargs -r dpkg-query --search | cut -d: -f1 | sort -u | xargs -r apt-mark manual ; apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; rm -rf /var/lib/apt/lists/*; python3 --version |
/bin/sh -c set -eux; for src in idle3 pydoc3 python3 python3-config; do dst="$(echo "$src" | tr -d 3)"; [ -s "/usr/local/bin/$src" ]; [ ! -e "/usr/local/bin/$dst" ]; ln -svT "$src" "/usr/local/bin/$dst"; done |
ENV PYTHON_PIP_VERSION=22.0.4 |
ENV PYTHON_SETUPTOOLS_VERSION=58.1.0 |
ENV PYTHON_GET_PIP_URL=https://github.com/pypa/get-pip/raw/49ca29908cfd49683da12f2d5a4fa5689539f9d9/public/get-pip.py |
ENV PYTHON_GET_PIP_SHA256=d077d469ce4c0beaf9cc97b73f8164ad20e68e0519f14dd886ce35d053721501 |
/bin/sh -c set -eux; savedAptMark="$(apt-mark showmanual)"; apt-get update; apt-get install -y --no-install-recommends wget; wget -O get-pip.py "$PYTHON_GET_PIP_URL"; echo "$PYTHON_GET_PIP_SHA256 *get-pip.py" | sha256sum -c -; apt-mark auto '.*' > /dev/null; [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark > /dev/null; apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; rm -rf /var/lib/apt/lists/*; export PYTHONDONTWRITEBYTECODE=1; python get-pip.py --disable-pip-version-check --no-cache-dir --no-compile "pip==$PYTHON_PIP_VERSION" "setuptools==$PYTHON_SETUPTOOLS_VERSION" ; rm -f get-pip.py; pip --version |
CMD ["python3"] |
RUN /bin/sh -c apt-get update && apt-get install --no-install-recommends -y libpq-dev && rm -rf /var/lib/apt/lists/* # buildkit |
RUN /bin/sh -c useradd -ms /bin/bash frappe # buildkit |
USER frappe |
RUN /bin/sh -c mkdir -p /home/frappe/frappe-bench/apps /home/frappe/frappe-bench/logs /home/frappe/frappe-bench/sites /home/frappe/frappe-bench/config # buildkit |
WORKDIR /home/frappe/frappe-bench |
USER root |
RUN /bin/sh -c pip install --no-cache-dir -U pip wheel && python -m venv env && env/bin/pip install --no-cache-dir -U pip wheel # buildkit |
COPY install-app.sh /usr/local/bin/install-app # buildkit |
ARG WKHTMLTOPDF_VERSION=0.12.6-1 |
ARG NODE_VERSION |
ENV NVM_DIR=/home/frappe/.nvm |
ENV PATH=/home/frappe/.nvm/versions/node/v16.18.0/bin/:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
RUN |2 WKHTMLTOPDF_VERSION=0.12.6-1 NODE_VERSION=16.18.0 /bin/sh -c apt-get update && apt-get install --no-install-recommends -y curl git && mkdir -p ${NVM_DIR} && curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash && . ${NVM_DIR}/nvm.sh && nvm install ${NODE_VERSION} && nvm use v${NODE_VERSION} && npm install -g yarn && nvm alias default v${NODE_VERSION} && rm -rf ${NVM_DIR}/.cache && echo 'export NVM_DIR="/home/frappe/.nvm"' >>~/.bashrc && echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm' >> ~/.bashrc && echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion' >> ~/.bashrc && if [ "$(uname -m)" = "aarch64" ]; then export ARCH=arm64; fi && if [ "$(uname -m)" = "x86_64" ]; then export ARCH=amd64; fi && downloaded_file=wkhtmltox_$WKHTMLTOPDF_VERSION.buster_${ARCH}.deb && curl -sLO https://github.com/wkhtmltopdf/packaging/releases/download/$WKHTMLTOPDF_VERSION/$downloaded_file && apt-get install -y ./$downloaded_file && rm $downloaded_file && apt-get purge -y --auto-remove curl && apt-get update && apt-get install --no-install-recommends -y mariadb-client postgresql-client wait-for-it jq && rm -rf /var/lib/apt/lists/* # buildkit |
COPY pretend-bench.sh /usr/local/bin/bench # buildkit |
COPY push_backup.py /usr/local/bin/push-backup # buildkit |
COPY configure.py patched_bench_helper.py /usr/local/bin/ # buildkit |
COPY gevent_patch.py /opt/patches/ # buildkit |
WORKDIR /home/frappe/frappe-bench/sites |
CMD ["/home/frappe/frappe-bench/env/bin/gunicorn" "--bind=0.0.0.0:8000" "--threads=4" "--workers=2" "--worker-class=gthread" "--worker-tmp-dir=/dev/shm" "--timeout=120" "--preload" "frappe.app:application"] |
COPY /home/frappe/frappe-bench/apps /home/frappe/frappe-bench/apps # buildkit |
COPY /home/frappe/frappe-bench/env /home/frappe/frappe-bench/env # buildkit |
COPY /home/frappe/frappe-bench/sites/apps.txt /home/frappe/frappe-bench/sites/ # buildkit |
USER frappe |
ARG APP_NAME=hrms |
USER root |
COPY /app/ ../apps/hrms/ # buildkit |
RUN |1 APP_NAME=hrms /bin/sh -c chown -R frappe:frappe ../apps/${APP_NAME}/ # buildkit |
RUN |1 APP_NAME=hrms /bin/sh -c install-app ${APP_NAME} # buildkit |
USER frappe |