blob: 4ceeb4fb764995457519b5607600f5379e38e990 [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
FROM ubuntu:22.04
ARG PY_VERSION=3.11
ARG NODE_MAJOR=16
# FIXME: change this?
# Ubunutu 18.04's latest python is 3.6 (and Ubuntu 20.04's is 3.8)
# In order to get a different python, we must add the deadsnakes apt repo, and install a specific version
RUN apt-get update \
&& apt-get install gpg gpg-agent software-properties-common -y --no-install-recommends \
&& add-apt-repository ppa:deadsnakes/ppa -y \
#&& add-apt-repository ppa:git-core/ppa -y \
&& apt-get update
RUN apt-get upgrade -y git
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
git-core \
python$PY_VERSION \
python$PY_VERSION-venv \
python$PY_VERSION-dev \
gcc \
libmagic1 \
libssl-dev \
libldap2-dev \
libsasl2-dev \
libjpeg8-dev \
zlib1g-dev \
zip \
subversion \
curl \
locales \
g++ \
libsvn-dev \
make \
sudo \
&& rm -rf /var/lib/apt/lists/*
# save env var, so init-docker-dev.sh can use it
ENV PYTHON_EXE=python$PY_VERSION
# up-to-date version of node & npm
RUN apt-get install -y ca-certificates curl gpg
RUN mkdir -p /etc/apt/keyrings
RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
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
RUN apt-get update
RUN apt-get install nodejs -y
# Snapshot generation for SVN (and maybe other SCMs) might fail without this
RUN locale-gen en_US.UTF-8
ENV LANG en_US.UTF-8
# GitPython uses this to determine current user when committing (used in
# tests). If this is not set, it uses os.getlogin, which fails inside docker.
ENV USER root
WORKDIR /allura
ENV PYTHONUNBUFFERED 1
CMD gunicorn --paste Allura/docker-dev.ini -b :8088 --reload