repo inicializado
This commit is contained in:
249
arches/Dockerfile
Normal file
249
arches/Dockerfile
Normal file
@@ -0,0 +1,249 @@
|
||||
FROM ubuntu:22.04
|
||||
# Start with Ubuntu 22
|
||||
|
||||
USER root
|
||||
|
||||
# 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 \
|
||||
&& 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 \
|
||||
git \
|
||||
postgresql-client-14 \
|
||||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# set environment variables
|
||||
ENV PYTHONDONTWRITEBYTECODE 1
|
||||
ENV PYTHONUNBUFFERED 1
|
||||
|
||||
# Set up a virual environment to use for all later commands.
|
||||
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
|
||||
# The name of the arches project
|
||||
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
|
||||
|
||||
# Setup needed directories
|
||||
RUN mkdir ${ARCHES_ROOT} && mkdir /var/log/supervisor && mkdir /var/log/celery
|
||||
|
||||
# Get ready to do some code installation
|
||||
RUN apt-get update && apt-get install -y make software-properties-common
|
||||
|
||||
# Install packages required to run Arches
|
||||
# Note that the ubuntu/debian package for libgdal1-dev pulls in libgdal1i, which is built
|
||||
# with everything enabled, and so, it has a huge amount of dependancies (everything that GDAL
|
||||
# support, directly and indirectly pulling in mysql-common, odbc, jp2, perl! ... )
|
||||
# a minimised build of GDAL could remove several hundred MB from the container layer.
|
||||
RUN set -ex \
|
||||
&& RUN_DEPS=" \
|
||||
build-essential \
|
||||
libxml2-dev \
|
||||
libproj-dev \
|
||||
libjson-c-dev \
|
||||
xsltproc \
|
||||
docbook-xsl \
|
||||
docbook-mathml \
|
||||
libgdal-dev \
|
||||
libpq-dev \
|
||||
mime-support \
|
||||
python3-dev \
|
||||
postgresql-client-14 \
|
||||
dos2unix \
|
||||
wait-for-it \
|
||||
vim \
|
||||
" \
|
||||
&& curl -sL https://deb.nodesource.com/setup_16.x | bash - \
|
||||
&& 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 --no-install-recommends $RUN_DEPS \
|
||||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||
|
||||
|
||||
|
||||
# ----------------------------------------------
|
||||
# Do installs relating to Node
|
||||
# ----------------------------------------------
|
||||
|
||||
# Set environment variables
|
||||
ENV NODE_MAJOR=18
|
||||
|
||||
# Update package lists and install necessary packages
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y \
|
||||
ca-certificates \
|
||||
curl \
|
||||
gnupg \
|
||||
&& mkdir -p /etc/apt/keyrings
|
||||
|
||||
# Add nodesource GPG key
|
||||
RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
|
||||
|
||||
# Add nodesource repository
|
||||
RUN echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \
|
||||
&& apt-get update
|
||||
|
||||
# Install Node.js
|
||||
RUN apt-get install -y nodejs
|
||||
|
||||
# Clean up
|
||||
RUN apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||
|
||||
|
||||
|
||||
|
||||
WORKDIR ${ARCHES_ROOT}
|
||||
|
||||
RUN rm -rf /root/.cache/pip/*
|
||||
|
||||
RUN pip install --upgrade pip
|
||||
RUN pip install --force-reinstall -U setuptools
|
||||
|
||||
# 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
|
||||
RUN echo 'archivos de idioma es copiados'
|
||||
|
||||
# copy in local settings to our newly created Arches project.
|
||||
WORKDIR ${APP_ROOT}
|
||||
COPY ./arches/settings_local.py ${SETTINGS_LOCAL_PATH}
|
||||
RUN sed -i 's/\r$//g' ${SETTINGS_LOCAL_PATH}
|
||||
# copy the celery.py file into out archaes project. This hopefully makes the workers and beat work:
|
||||
COPY ./arches/celery.py ${CELERY_PATH}
|
||||
RUN sed -i 's/\r$//g' ${CELERY_PATH}
|
||||
# copy the urls.py into our new Arches project. This is part of
|
||||
# customization for internationalization
|
||||
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
|
||||
# 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}";
|
||||
COPY ./arches/gunicorn_config.py ${GUNICORN_CONFIG_PATH}
|
||||
RUN sed -i 's/\r$//g' ${GUNICORN_CONFIG_PATH}
|
||||
|
||||
# Copy customized package until the issue with datatables.net is resolved.
|
||||
# COPY ./arches/package.json ${PACKAGE_PATH}
|
||||
|
||||
# copy the celery supervisor
|
||||
COPY /arches/conf.d/ ${APP_ROOT}/conf.d/
|
||||
RUN chmod -R 700 ${APP_ROOT}/conf.d/
|
||||
COPY /arches/arches_proj-supervisor.conf ${APP_ROOT}/arches_proj-supervisor.conf
|
||||
RUN chmod -R 700 ${APP_ROOT}/arches_proj-supervisor.conf
|
||||
RUN mkdir -p /var/log/supervisor
|
||||
RUN mkdir -p /var/log/celery
|
||||
|
||||
# Now install NPM
|
||||
WORKDIR ${APP_ROOT}
|
||||
# RUN echo "NPM install....";
|
||||
# RUN npm install
|
||||
|
||||
# Set some settings to make NPM less fussy
|
||||
RUN npm config set cafile null
|
||||
RUN npm config set strict-ssl false
|
||||
|
||||
# remove any node_modules that might have been installed by the arches install
|
||||
RUN rm -rf ${APP_ROOT}/node_modules
|
||||
RUN rm -f ${APP_ROOT}/package-lock.json
|
||||
# Now do the NPM install
|
||||
RUN npm install
|
||||
|
||||
# Make sure the entry point is available and lacks weird characters
|
||||
# that don't work in a Linux OS
|
||||
COPY /arches/entrypoint.sh ${APP_ROOT}/entrypoint.sh
|
||||
RUN chmod -R 700 ${APP_ROOT}/entrypoint.sh &&\
|
||||
dos2unix ${APP_ROOT}/entrypoint.sh
|
||||
|
||||
|
||||
# Set default workdir
|
||||
WORKDIR ${APP_ROOT}
|
||||
ENTRYPOINT ["./entrypoint.sh"]
|
||||
CMD ["run_arches"]
|
||||
|
||||
|
||||
# Set default workdir
|
||||
WORKDIR ${APP_ROOT}
|
||||
# Expose port 8000 (Django server)
|
||||
EXPOSE 8000
|
||||
# Expose Webpack port
|
||||
EXPOSE 8021
|
||||
# Expose CouchDB port
|
||||
EXPOSE 5984
|
||||
Reference in New Issue
Block a user