Skip to content

Commit

Permalink
Merge pull request #71 from hydroshare/bullseye-py39-dj32-upgrade
Browse files Browse the repository at this point in the history
Base image update: Debian buster, Python3.9
  • Loading branch information
devincowan authored Dec 19, 2022
2 parents 7c4bfa6 + 757acf2 commit 07ed064
Show file tree
Hide file tree
Showing 3 changed files with 165 additions and 89 deletions.
70 changes: 37 additions & 33 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,33 +1,34 @@
FROM python:3.6-jessie
MAINTAINER Michael J. Stealey <[email protected]>

FROM python:3.9-buster

ENV DEBIAN_FRONTEND noninteractive
ENV PY_SAX_PARSER=hs_core.xmlparser

RUN printf "deb http://deb.debian.org/debian/ jessie main\ndeb http://security.debian.org jessie/updates main" > /etc/apt/sources.list
RUN printf "deb http://deb.debian.org/debian/ buster main\ndeb http://security.debian.org/debian-security buster/updates main" > /etc/apt/sources.list

RUN apt-get update && apt-get install -y \
apt-transport-https \
ca-certificates \
sudo \
&& apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
curl \
lsb-release \
sudo

RUN sudo mkdir -p /etc/apt/keyrings
RUN curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

RUN curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
RUN echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Add docker.list and requirements.txt - using /tmp to keep hub.docker happy
COPY . /tmp
RUN cp /tmp/docker.list /etc/apt/sources.list.d/ \
&& cp /tmp/requirements.txt /requirements.txt
RUN curl -sL https://deb.nodesource.com/setup_lts.x | sudo -E bash -

COPY docker.list /etc/apt/sources.list.d/
RUN sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7EA0A9C3F273FCD8

RUN sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list' \
&& wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -
RUN sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
RUN wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

RUN apt-get update && apt-get install -y --fix-missing --no-install-recommends \
apt-utils \
docker-ce \
libfuse2 \
libjpeg62-turbo \
libjpeg62-turbo-dev \
Expand All @@ -36,9 +37,8 @@ RUN apt-get update && apt-get install -y --fix-missing --no-install-recommends \
gdal-bin \
build-essential \
libgdal-dev \
libgdal1h \
postgresql-9.4 \
postgresql-client-9.4 \
postgresql-15 \
postgresql-client-15 \
git \
rsync \
openssh-client \
Expand All @@ -50,21 +50,14 @@ RUN npm install -g phantomjs-prebuilt

WORKDIR /

#install numpy before matplotlib
RUN pip install 'numpy==1.16.0'

RUN pip install git+https://github.com/sblack-usu/defusedexpat.git

# Install pip based packages (due to dependencies some packages need to come first)
RUN export CPLUS_INCLUDE_PATH=/usr/include/gdal
RUN export C_INCLUDE_PATH=/usr/include/gdal
RUN export GEOS_CONFIG=/usr/bin/geos-config
RUN HDF5_INCDIR=/usr/include/hdf5/serial
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
RUN pip install 'setuptools<58.0.0'

# Install GDAL 2.4.1 from source
RUN wget http://download.osgeo.org/gdal/2.4.1/gdal-2.4.1.tar.gz \
RUN wget https://ftp.osuosl.org/pub/osgeo/download/gdal/2.4.1/gdal-2.4.1.tar.gz \
&& tar -xzf gdal-2.4.1.tar.gz \
&& rm gdal-2.4.1.tar.gz

Expand All @@ -75,19 +68,30 @@ RUN ./configure --with-python --with-geos=yes \
&& sudo ldconfig
WORKDIR /

# TODO: iROds 4.2.x is holding us to Debian Buster which is EOL. It also requires libssl1.0.0 which is obsolete
# we should upgrade to iRods 4.3, Debian Bullseye, etc but this will require at a minimum, changes to our iinit use in HS
RUN wget http://snapshot.debian.org/archive/debian/20190501T215844Z/pool/main/g/glibc/multiarch-support_2.28-10_amd64.deb
RUN sudo dpkg -i multiarch-support*.deb
RUN wget http://snapshot.debian.org/archive/debian/20170705T160707Z/pool/main/o/openssl/libssl1.0.0_1.0.2l-1%7Ebpo8%2B1_amd64.deb
RUN sudo dpkg -i libssl1.0.0*.deb

# Install iRODS
RUN wget -qO - https://packages.irods.org/irods-signing-key.asc | sudo apt-key add - \
&& echo "deb [arch=amd64] https://packages.irods.org/apt/ trusty main" | \
&& echo "deb [arch=amd64] https://packages.irods.org/apt/ bionic main" | \
sudo tee /etc/apt/sources.list.d/renci-irods.list \
&& sudo apt-get update && sudo apt-get install -y \
apt-transport-https \
irods-runtime \
irods-icommands
irods-runtime=4.2.10 \
irods-icommands=4.2.10

# Removed defusedexpat (as part of upgrade to python 3.9)
# Added defusedxml
# https://docs.python.org/3.9/library/xml.html?highlight=xml#the-defusedxml-package
# https://github.com/python/cpython/issues/82766

# inplaceedit in pip doesn't seem compatible with Django 1.11 yet...
RUN pip install git+https://github.com/theromis/django-inplaceedit.git@e6fa12355defedf769a5f06edc8fc079a6e982ec
# foresite-toolkit in pip isn't compatible with python3
RUN pip install git+https://github.com/sblack-usu/foresite-toolkit.git#subdirectory=foresite-python/trunk
# Install pip based packages (due to dependencies some packages need to come first)
COPY ./requirements.txt /requirements.txt
RUN pip install -r requirements.txt

# Install SSH for remote PyCharm debugging
RUN mkdir /var/run/sshd
Expand Down
2 changes: 1 addition & 1 deletion docker.list
Original file line number Diff line number Diff line change
@@ -1 +1 @@
deb https://download.docker.com/linux/debian jessie stable
deb https://download.docker.com/linux/debian buster stable
182 changes: 127 additions & 55 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,110 +1,182 @@
amqp==2.5.2
# generated using pipdeptree https://github.com/tox-dev/pipdeptree
# pipdeptree -f | sed 's/ //g' | sort -u > requirements.txt
aiohttp==3.8.3
amqp==2.6.1
anyjson==0.3.3
arrow==0.7.0
asgiref==3.5.2
astroid==1.4.9
attrs==22.1.0
autopep8==1.2.2
Babel==2.11.0
bagit==1.5.4
celery==4.4.0
cffi==1.11.5
click==6.7
bcrypt==4.0.1
beautifulsoup4==4.11.1
billiard==3.6.4.0
bleach==4.1.0
celery==4.4.7
certifi==2022.12.7
cffi==1.15.1
cftime==1.6.2
chardet==5.1.0
charset-normalizer==2.0.12
click==8.1.3
colorama==0.4.6
coreapi==2.3.3
coverage==4.0.3
coreschema==0.0.4
coverage==6.5.0
cryptography==38.0.4
cycler==0.10.0
#defusedexpat==0.4
defusedxml==0.4.1
Django==1.11.29
django-appconf==1.0.2
django-autocomplete-light==2.3.3
django-braces==1.9.0
django-compressor==2.2
django-contrib-comments==1.9.0
django-cors-headers==2.4.0
django-crispy-forms==1.7.2
django-debug-toolbar==1.9.1
debugpy==1.6.4
deepdiff==1.7.0
defusedxml==0.7.1
Deprecated==1.2.13
Django==3.2.15
django-appconf==1.0.5
django-autocomplete-light==2.3.6
django-braces==1.15.0
django-compressor==4.1
django-contrib-comments==2.2.0
django-cors-headers==3.10.1
django-crispy-forms==1.13.0
django-debug-toolbar==3.2.4
django-freshly==0.1.2
django-haystack==2.8.1
django-haystack==3.1.1
django-heartbeat==2.0.2
django-ipware==2.1.0
django-jsonfield==1.0.1
django-jsonfield==1.4.1
django-modeltranslation==0.12.2
django-nose==1.4.5
django-oauth-toolkit==1.1.0
django-robots==2.0
django-security==0.9.3
django-oauth-toolkit==2.1.0
djangorestframework==3.12.4
django-robots==4.0
django-security==0.12.0
django-test-without-migrations==0.6
django-timedeltafield==0.7.10
django-widget-tweaks==1.4.1
djangorestframework==3.11.0
dnspython==2.2.1
docker-py==1.7.2
dominate==2.4.0
DoubleMetaphone==0.1
drf-haystack==1.8.5
drf-yasg==1.17.1
ecdsa==0.13.3
enum34==1.1.6
filebrowser-safe==0.5.0
flake8==3.5.0
drf-haystack==1.8.11
drf-yasg==1.20.0
ecdsa==0.18.0
email-validator==1.3.0
exceptiongroup==1.0.4
filebrowser-safe==1.1.1
flake8==6.0.0
flex==6.14.1
flower==0.9.3
foresite@git+https://github.com/sblack-usu/foresite-toolkit.git@94c0c2a8e21a922caa1df6cc412d5dc1a7adb189#subdirectory=foresite-python/trunk
funcsigs==1.0.2
#functools32==3.2.3.post2
future==0.16.0
GDAL==2.4.1
geographiclib==1.52
geojson==1.3.2
geopy==1.16.0
gevent==1.4.0
grappelli-safe==0.5.1
gunicorn==19.6.0
gevent==22.10.2
grappelli-safe==1.1.1
greenlet==2.0.1
gunicorn==20.1.0
hsmodels@git+https://github.com/hydroshare/hsmodels.git@3197b512d2764e2a4772596fe6c288331e53223e
html5lib==0.9999999
idna==3.4
inflection==0.3.1
iniconfig==1.1.1
ipaddress==1.0.22
isodate==0.5.4
itypes==1.2.0
Jinja2==2.10.1
jsonpointer==1.14
jsonschema==2.6.0
jwcrypto==1.4.2
keepalive==0.5
kombu==4.6.7
kiwisolver==1.4.4
kombu==4.6.11
lazy-object-proxy==1.8.0
lxml==4.4.0
#mapnik==0.1
Markdown==3.0.1
MarkupSafe==1.0
MarkupSafe==2.0.1
matplotlib==3.1.2
mccabe==0.6.1
Mezzanine==4.3.1
mccabe==0.7.0
Mezzanine==5.1.4
mock==1.3.0
nameparser==0.5.7
netCDF4==1.5.1.2
netCDF4==1.5.1.2
nose==1.3.7
nose-timer>=0.7.4,<1.0.0
nose-timer==0.7.6
numpy==1.16.6
oauthlib==3.1.0
OWSLib==0.10.3
paramiko==2.4.2
packaging==21.3
paramiko==2.12.0
pbr==1.10.0
pep8==1.7.0
Pillow==9.3.0
pip==22.3.1
pluggy==1.0.0
prettytable==0.7.2
probableparsing==0.0.1
probablepeople==0.5.4
psycopg2==2.8.2
ipaddress==1.0.22
psutil==4.0.0
psycopg2==2.9.5
pyasn1==0.4.4
pycodestyle==2.3.1
pycodestyle==2.10.0
pycparser==2.21
PyCRS==1.0.1
pyflakes==1.6.0
pydantic==1.10.2
pydebug==1.0.3
pyflakes==3.0.1
PyLD==2.0.3
pylint==1.5.5
pyproj==1.9.5.1
pysolr==3.4.0
pysqlite3==0.2.1
pytest-django>=3.4.7, <4.0.0
python-crfsuite==0.9.6
python-dateutil==2.5.3
python-irodsclient==0.8.1
pytz==2016.3
PyNaCl==1.5.0
pyparsing==3.0.9
pyproj==3.4.0
pysolr==3.9.0
pytest==7.2.0
pytest-cov==4.0.0
pytest-django==4.5.2
python-crfsuite==0.9.8
python-dateutil==2.8.0
python-irodsclient==0.8.1
pytz==2022.6
pytz-deprecation-shim==0.1.0.post0
PyYAML==5.3
rcssmin==1.0.6
rdflib==4.0.1
rcssmin==1.1.0
rdflib==5.0.0
redis==2.10.5
requests==2.20.0
requests==2.28.1
requests-oauthlib==1.3.1
rfc3987==1.3.8
rjsmin==1.2.0
robot-detection==0.4
ruamel.yaml==0.17.21
ruamel.yaml.clib==0.2.7
selenium==3.0.2
setuptools==57.5.0
six==1.16.0
sorl-thumbnail==12.8.0
soupsieve==2.3.2.post1
sqlparse==0.4.3
strict-rfc3339==0.7
suds-jurko==0.6
timeago==1.0.10
tomli==2.0.1
tornado==5.1.1
typing_extensions==4.4.0
tzdata==2022.7
tzlocal==4.2
ua-parser==0.16.1
uritemplate==3.0.0
urllib3==1.26.13
validate-email==1.3
vine==1.3.0
virtualenv==15.0.2
webencodings==0.5.1
websocket-client==1.4.2
wheel==0.38.4
wrapt==1.14.1
xmlrunner==1.7.7
xmltodict==0.10.2
zope.event==4.5.0
zope.interface==5.5.2

0 comments on commit 07ed064

Please sign in to comment.