From 0e175f9853621f6cb17e13e6767a2d396f0ba33f Mon Sep 17 00:00:00 2001 From: sysadmin Date: Mon, 20 Apr 2026 11:58:15 -0400 Subject: [PATCH] Actualizar arches/Dockerfile --- arches/Dockerfile | 97 +++++++++++++++++++++++++++++++++-------------- 1 file changed, 69 insertions(+), 28 deletions(-) diff --git a/arches/Dockerfile b/arches/Dockerfile index 454e45d..d3e3e33 100644 --- a/arches/Dockerfile +++ b/arches/Dockerfile @@ -3,37 +3,56 @@ FROM ubuntu:22.04 USER root -# Do the apt installation also install git -RUN apt-get update && && apt-get install -y --no-install-recommends \ +# Set environment variables to make installations non-interactive +ENV DEBIAN_FRONTEND=noninteractive +ENV TZ="America/La_Paz" + +# Update package lists and install basic packages first +RUN apt-get update && apt-get install -y --no-install-recommends \ + curl \ + wget \ + gnupg \ + lsb-release \ + software-properties-common \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +# Add Python 3.12 repository and install Python packages +RUN add-apt-repository ppa:deadsnakes/ppa \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ python3.12 \ python3.12-dev \ python3.12-venv \ python3-pip \ - make software-properties-common \ - curl \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +# Install system dependencies +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + make \ gcc \ build-essential \ mime-support \ libgdal-dev \ dos2unix \ - nano -RUN apt-get update --fix-missing && apt-get install -y git + nano \ + git \ + postgresql-client-14 \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* - -# Install the postgres client -RUN apt-get update -RUN apt-get install -y postgresql-client-14 - -FROM python:3.12 # set environment variables ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 # Set up a virual environment to use for all later commands. -ENV VIRTUAL_ENV=/opt/venv -RUN python3 -m venv $VIRTUAL_ENV -ENV PATH="$VIRTUAL_ENV/bin:$PATH" -RUN pip install --upgrade pip +RUN python3.12 -m venv /opt/venv \ + && . /opt/venv/bin/activate \ + && pip install --upgrade pip +# Make sure we use the virtualenv: +ENV PATH="/opt/venv/bin:$PATH" ## Setting default environment variables ARG ARCHES_ROOT @@ -42,13 +61,19 @@ ARG ARCHES_PROJECT # Project specific paths ARG APP_ROOT ARG APP_COMP_FOLDER +ARG UPLOADED_FILES_FOLDER +ARG ARCHES_PIP_VERSION + # settings_local.py provides the DB credentials, etc. to the Arches project. +ENV SETTINGS_PATH=${APP_COMP_FOLDER}/settings.py ENV SETTINGS_LOCAL_PATH=${APP_COMP_FOLDER}/settings_local.py ENV CELERY_PATH=${APP_COMP_FOLDER}/celery.py ENV URLS_PATH=${APP_COMP_FOLDER}/urls.py ENV GUNICORN_CONFIG_PATH=${APP_COMP_FOLDER}/gunicorn_config.py ENV ARCHES_DATA=${ARCHES_ROOT}/arches_data ENV PACKAGE_PATH=${APP_COMP_FOLDER}/package.json +ENV ESLINT_CONFIG_MJS_PATH_USE=${APP_ROOT}/eslint.config.mjs +ENV UPLOADED_FILES_FOLDER=${UPLOADED_FILES_FOLDER} ENV WHEELS=/wheels ENV PYTHONUNBUFFERED=1 ENV PYTHONDONTWRITEBYTECODE 1 @@ -79,16 +104,16 @@ RUN set -ex \ python3-dev \ postgresql-client-14 \ dos2unix \ - gettext \ + wait-for-it \ + nano \ " \ - && apt-get install -y --no-install-recommends curl \ && curl -sL https://deb.nodesource.com/setup_16.x | bash - \ - && curl -sL https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - \ - && add-apt-repository "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -sc)-pgdg main" \ + && curl -sL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor -o /usr/share/keyrings/postgresql-keyring.gpg \ + && echo "deb [signed-by=/usr/share/keyrings/postgresql-keyring.gpg] http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" | tee /etc/apt/sources.list.d/postgresql.list \ && apt-get update -y \ - && apt-get install -y "wait-for-it" \ - && apt-get install -y nano \ - && apt-get install -y --no-install-recommends $RUN_DEPS + && apt-get install -y --no-install-recommends $RUN_DEPS \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* @@ -129,10 +154,25 @@ WORKDIR ${ARCHES_ROOT} RUN rm -rf /root/.cache/pip/* RUN pip install --upgrade pip -# Install the current stable release of the Arches application and make an Arches project. -RUN pip install supervisor && pip install pytz --upgrade && pip install tzdata --upgrade && pip install Redis && pip install gunicorn && pip install boto3==1.26 && pip install django-storages==1.14.4 && pip install arches && arches-admin startproject ${ARCHES_PROJECT} +RUN pip install --force-reinstall -U setuptools -# Make sure we have the environment variables in the python app? +# Install the current stable release of the Arches application and make an Arches project. +RUN pip install supervisor \ + && pip install pytz --upgrade \ + && pip install tzdata --upgrade \ + && pip install Redis \ + && pip install gunicorn \ + && pip install boto3==1.26 \ + && pip install django-storages==1.14.4 \ + && pip install arches==${ARCHES_PIP_VERSION} + +# create a new Arches project +RUN mkdir -p /new_arches_proj +RUN arches-admin startproject ${ARCHES_PROJECT} --directory /new_arches_proj +RUN mv /new_arches_proj ${APP_ROOT} + +# create the uploaded files folder +RUN mkdir -p ${UPLOADED_FILES_FOLDER} # copia de archivos de idioma es COPY ./arches/es /opt/venv/lib/python3.12/site-packages/arches/locale/es @@ -150,9 +190,10 @@ RUN sed -i 's/\r$//g' ${CELERY_PATH} RUN echo "copied urls to ${URLS_PATH}"; COPY ./arches/urls.py ${URLS_PATH} RUN sed -i 's/\r$//g' ${URLS_PATH} + # Copy the gunicorn_config.py file into our new Arches project. This is used # for running Arches in production (not DEBUG mode) -# NOTE: We're NOT actually using this, because it will throw an error with urls.py +# NOTE: We're NOT actually using this, because it will throw an error with urls.py # So this is here for reference only in case someone wants to edit gunicorn_config.py # and figure out how to make it work. RUN echo "copy gunicorn_config.py to ${GUNICORN_CONFIG_PATH}"; @@ -205,4 +246,4 @@ EXPOSE 8000 # Expose Webpack port EXPOSE 8021 # Expose CouchDB port -EXPOSE 5984 +EXPOSE 5984 \ No newline at end of file