-
Notifications
You must be signed in to change notification settings - Fork 54
Update to Trac 1.6 and Python 3.8 #157
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,62 +1,62 @@ | ||
# The official python:2.7 image no longer receives automatic rebuilds (it's | ||
# a year old as of October, 2021), so use the latest LTS release of Ubuntu | ||
# that includes Python 2.7 instead. | ||
FROM ubuntu:20.04 | ||
|
||
# Install packages needed to run your application (not build deps). | ||
RUN set -x \ | ||
&& RUN_DEPS=" \ | ||
ca-certificates \ | ||
git \ | ||
libpq5 \ | ||
make \ | ||
postgresql-client \ | ||
python2.7 \ | ||
" \ | ||
&& apt-get update && apt-get install -y --no-install-recommends $RUN_DEPS \ | ||
# pull official base image | ||
FROM python:3.8-slim-bullseye | ||
|
||
# set work directory | ||
WORKDIR /code | ||
|
||
# set environment varibles | ||
ENV PYTHONDONTWRITEBYTECODE 1 | ||
ENV PYTHONUNBUFFERED 1 | ||
|
||
# getting postgres from PGDG (https://wiki.postgresql.org/wiki/Apt) | ||
# gnupg is required to run apt.postgresql.org.sh | ||
RUN apt-get update \ | ||
&& apt-get install --assume-yes --no-install-recommends \ | ||
git \ | ||
gnupg \ | ||
postgresql-common \ | ||
&& /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh -y\ | ||
&& apt-get install --assume-yes --no-install-recommends postgresql-client-14\ | ||
&& apt-get purge --assume-yes --auto-remove gnupg\ | ||
&& rm -rf /var/lib/apt/lists/* | ||
|
||
# Copy requirements | ||
ADD requirements.txt /requirements.txt | ||
ADD DjangoPlugin /DjangoPlugin | ||
|
||
# Install build deps, then run `pip install`, then remove unneeded build deps all in a single step. | ||
# Correct the path to your production requirements file, if needed. | ||
# For installing a python2.7-compatible pip: https://stackoverflow.com/a/54335642/166053 | ||
# Since we are using the system Python, also isolate the code in its own virtualenv. | ||
RUN set -x \ | ||
&& BUILD_DEPS=" \ | ||
build-essential \ | ||
libpq-dev \ | ||
python2.7-dev \ | ||
wget \ | ||
" \ | ||
&& apt-get update && apt-get install -y --no-install-recommends $BUILD_DEPS \ | ||
&& wget -q -O /tmp/get-pip.py https://bootstrap.pypa.io/pip/2.7/get-pip.py \ | ||
&& python2.7 /tmp/get-pip.py \ | ||
&& rm /tmp/get-pip.py \ | ||
&& python2.7 -m pip install virtualenv \ | ||
&& virtualenv /venv \ | ||
&& /venv/bin/python -m pip install --no-cache-dir -r /requirements.txt \ | ||
\ | ||
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $BUILD_DEPS \ | ||
# install deb packages | ||
RUN apt-get update \ | ||
&& apt-get install --assume-yes --no-install-recommends \ | ||
make \ | ||
&& rm -rf /var/lib/apt/lists/* | ||
|
||
# Copy application code | ||
RUN mkdir /code/ | ||
WORKDIR /code/ | ||
ADD . /code/ | ||
# install python dependencies | ||
COPY ./requirements.txt ./requirements.txt | ||
COPY ./DjangoPlugin ./DjangoPlugin | ||
|
||
RUN apt-get update \ | ||
&& apt-get install --assume-yes --no-install-recommends \ | ||
g++ \ | ||
gcc \ | ||
libc6-dev \ | ||
libpq-dev \ | ||
&& python3 -m pip install --no-cache-dir -r requirements.txt \ | ||
&& apt-get purge --assume-yes --auto-remove \ | ||
gcc \ | ||
libc6-dev \ | ||
libpq-dev \ | ||
&& rm -rf /var/lib/apt/lists/* | ||
|
||
COPY ./docker-entrypoint.sh ./docker-entrypoint.sh | ||
COPY ./Makefile ./Makefile | ||
COPY ./scss ./scss | ||
COPY ./trac-env ./trac-env | ||
RUN make compile-scss | ||
RUN rm -r ./scss | ||
|
||
RUN PATH=/venv/bin:${PATH} make compile-scss | ||
|
||
VOLUME /code/trac-env/files/ | ||
|
||
# gunicorn or tracd will listen on this port | ||
EXPOSE 9000 | ||
|
||
ENV DJANGO_SETTINGS_MODULE=tracdjangoplugin.settings TRAC_ENV=/code/trac-env/ | ||
|
||
ENTRYPOINT ["/code/docker-entrypoint.sh"] | ||
ENTRYPOINT ["./docker-entrypoint.sh"] | ||
|
||
# Start gunicorn | ||
CMD ["/venv/bin/gunicorn", "tracdjangoplugin.wsgi:application", "--bind", "0.0.0.0:9000", "--workers", "8", "--max-requests", "1000"] | ||
CMD ["gunicorn", "tracdjangoplugin.wsgi:application", "--bind", "0.0.0.0:9000", "--workers", "8", "--max-requests", "1000"] |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -10,12 +10,12 @@ set -e | |
# database = postgres://... | ||
|
||
for var in "${!TRAC_INI_@}"; do | ||
sed -i "s;^${var:9} = .*;${var:9} = ${!var};" trac-env/conf/trac.ini | ||
sed -i "s;^${var:9} = .*;${var:9} = ${!var};" /code/trac-env/conf/trac.ini | ||
done | ||
|
||
if [ "x$TRAC_COLLECT_STATIC" = 'xon' ]; then | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. For the future -- perhaps we could use a similar trick to allow upgrade to be run more easily, when it is needed? (Not now.) |
||
# Collect trac static files to be served by nginx | ||
/venv/bin/trac-admin ./trac-env/ deploy ./static/ | ||
trac-admin /code/trac-env/ deploy ./static/ | ||
fi | ||
|
||
exec "$@" |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,22 +1,17 @@ | ||
# spam-filter doesn't work without babel (but somehow doesn't list it in its requirements) | ||
Trac[pygments, babel]==1.4.4 | ||
Trac[pygments, babel]==1.6.0 | ||
dnspython==1.15 | ||
spambayes == 1.1b1 | ||
psycopg2==2.7.6.1 --no-binary=psycopg2 | ||
docutils==0.14 | ||
psycopg2==2.9.9 --no-binary=psycopg2 | ||
Django==1.11.29 | ||
libsass==0.17.0 | ||
Genshi==0.7.7 # still required by some plugins | ||
libsass==0.23.0 | ||
|
||
# Trac plugins | ||
https://trac.edgewall.org/browser/plugins/1.4/spam-filter?format=zip | ||
# TracXMLRPC from PyPI does not (yet) have a 1.2.0 release (compatible with Trac 1.4) | ||
https://trac.edgewall.org/browser/plugins/trunk/spam-filter?rev=17752&format=zip | ||
# TracXMLRPC from PyPI does not (yet) have a 1.2.0 release (compatible with Trac >=1.4) | ||
https://trac-hacks.org/browser/xmlrpcplugin/trunk?rev=18591&format=zip | ||
|
||
oauthlib==2.1.0 | ||
requests==2.20.1 | ||
requests-oauthlib==1.0.0 | ||
Comment on lines
-16
to
-18
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Are these 3 packages required even without bumping to the Trac 1.6? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. They're required for the "log in with github" functionality provided by We could make this change to our requirements file already without updating Trac, yes, but it doesn't (shouldn't?) have any effect in practice because the dependencies are installed anyway. It only serves to reduce the size of the requirements file. |
||
trac-github==2.3 | ||
# No pypi release compatible with trac 1.6 yet | ||
trac-github[oauth] @ git+https://github.com/bmispelon/[email protected] | ||
|
||
gunicorn==19.10.0 | ||
sentry-sdk==1.11.0 | ||
|
Uh oh!
There was an error while loading. Please reload this page.