Updated docker files to build and run an image based on devuan:ascii instead of debian:jessie.

- Legacy-Id: 16784
This commit is contained in:
Henrik Levkowetz 2019-09-30 20:25:40 +00:00
parent 4c28f69172
commit 6e31552b7c
4 changed files with 68 additions and 91 deletions

View file

@ -19,7 +19,7 @@
# but the database has *not* been loaded with a dump, and supporting files (drafts, charters, etc.)
# have *not* been downloaded.
FROM debian:jessie
FROM dyne/devuan:ascii
LABEL maintainer="Henrik Levkowetz <henrik@levkowetz.com>"
# Default django runserver port
@ -27,15 +27,16 @@ EXPOSE 8000
# Run apt-get noninteractive
ENV DEBIAN_FRONTEND=noninteractive
ENV DEVUAN_FRONTEND=noninteractive
RUN apt-get update
RUN apt-get install -qy apt-transport-https
# Use backports, updates, and security updates; over https if possible
RUN echo "deb https://deb.debian.org/debian jessie main contrib non-free" > /etc/apt/sources.list
RUN echo "deb https://deb.debian.org/debian jessie-backports main contrib non-free" >> /etc/apt/sources.list
RUN echo "deb https://deb.debian.org/debian jessie-updates main contrib non-free" >> /etc/apt/sources.list
RUN echo "deb http://security.debian.org/debian-security jessie/updates main contrib non-free" >> /etc/apt/sources.list
# Use backports, updates, and security updates
RUN echo "deb http://deb.devuan.org/merged ascii main contrib non-free" > /etc/apt/sources.list
RUN echo "deb http://deb.devuan.org/merged ascii-security main contrib non-free" >> /etc/apt/sources.list
RUN echo "deb http://deb.devuan.org/merged ascii-updates main contrib non-free" >> /etc/apt/sources.list
RUN echo "deb http://deb.devuan.org/merged ascii-backports main contrib non-free" >> /etc/apt/sources.list
# Install needed packages
#
@ -44,27 +45,44 @@ RUN echo "deb http://security.debian.org/debian-security jessie/updates main con
# 15%, about 100MB.
# Fetch apt package information, and upgrade to latest package versions
RUN apt-get update
RUN apt-get -qy upgrade
# Install the packages we need
RUN apt-get install -qy \
build-essential \
bzip2 \
ca-certificates \
colordiff \
gawk \
gcc \
ipython \
jq \
less \
libfreetype6 \
libfontconfig \
libbz2-dev \
libdb5.3-dev \
libexpat1-dev \
libffi-dev \
libgdbm-dev \
libjpeg62-turbo-dev \
liblzma-dev \
libmagic1 \
libmariadbclient-dev \
libncurses5-dev \
libncursesw5-dev \
libreadline-dev \
libsqlite3-dev \
libssl-dev \
libsvn1 \
libxml2-dev \
libxslt-dev \
libz-dev \
locales \
make \
man \
mariadb-client \
mariadb-server \
openssh-client \
patch \
procps \
@ -77,33 +95,12 @@ RUN apt-get install -qy \
rsync \
subversion \
sudo \
uuid-dev \
vim \
wget
# Install SystemV init
RUN apt-get install -qy sysvinit-core \
&& cp /usr/share/sysvinit/inittab /etc/inittab
# Get rid of systemd
RUN apt-get remove --yes --purge --auto-remove systemd \
&& echo -e "\nPackage: systemd\nPin: release *\nPin-Priority: -1\n" > /etc/apt/preferences.d/no-systemd
# ------------------------------------------------------------------------------
# The following section is all about installing mysql server 5.6, instead of
# 5.5 which is provided in jessie. It's a bit convoluted.
# ------------------------------------------------------------------------------
# Get the key used to sign the mysql repo
RUN gpg --keyserver pgp.mit.edu --recv-keys 5072E1F5
RUN gpg --export -a 5072E1F5 | apt-key add -
# Install a package which will install apt sources entries for current mysql
RUN echo 'mysql-apt-config mysql-apt-config/select-server select mysql-5.6' | debconf-set-selections
RUN echo 'mysql-apt-config mysql-apt-config/repo-url string https://repo.mysql.com/apt/' | debconf-set-selections
RUN echo "deb https://repo.mysql.com/apt/debian/ jessie mysql-apt-config" >> /etc/apt/sources.list.d/mysql-apt-config.list
RUN apt-get update
RUN apt-get install -qy mysql-apt-config
RUN rm /etc/apt/sources.list.d/mysql-apt-config.list
wget \
xz-utils\
zile \
zlib1g-dev
# Get the key used to sign the libyang repo
RUN wget -nv http://download.opensuse.org/repositories/home:liberouter/Debian_9.0/Release.key
@ -111,14 +108,14 @@ RUN apt-key add - < Release.key
RUN rm Release.key
# Add apt source entry for libyang
RUN echo "deb http://download.opensuse.org/repositories/home:/liberouter/Debian_8.0/ /" >> /etc/apt/sources.list.d/libyang.list
RUN echo "deb http://download.opensuse.org/repositories/home:/liberouter/Debian_9.0/ /" >> /etc/apt/sources.list.d/libyang.list
# Update the package defs, and install the desired mysql from the mysql repo
RUN apt-get update
RUN apt-get install -qy mysql-community-server libmysqlclient-dev libyang
RUN apt-get install -qy libyang
# This is expected to exist by the mysql startup scripts:
RUN touch /etc/mysql/debian.cnf
#RUN touch /etc/mysql/debian.cnf
# ------------------------------------------------------------------------------
# Get rid of installation files we don't need in the image, to reduce size
@ -154,12 +151,29 @@ RUN ln -s /usr/local/phantomjs-1.9.8-linux-x86_64/bin/phantomjs .
ADD https://tools.ietf.org/tools/idnits/idnits /usr/local/bin/
RUN chmod +rx /usr/local/bin/idnits
# # Python 3
ENV PYVER=3.6.9
ENV PYREV=3.6
WORKDIR /usr/src
RUN wget -q https://www.python.org/ftp/python/$PYVER/Python-$PYVER.tar.xz
RUN tar xJf Python-$PYVER.tar.xz
RUN rm Python-$PYVER.tar.xz
WORKDIR /usr/src/Python-$PYVER/
RUN ./configure
RUN make
RUN make altinstall
WORKDIR /usr/src
RUN rm -rf /usr/src/Python-$PYVER/
ENV HOSTNAME="datatracker"
ENV DDIR="/usr/local/share/datatracker"
RUN mkdir -p $DDIR
WORKDIR $DDIR
COPY requirements.txt ./
RUN pip --no-cache-dir install -r requirements.txt
COPY requirements3.txt ./
RUN pip$PYREV --no-cache-dir install -r requirements3.txt
COPY settings_local.py ./
COPY setprompt ./

View file

@ -84,10 +84,9 @@ fi
VIRTDIR="/opt/home/$USER/$TAG"
echo "Checking that there's a virtual environment for $TAG ..."
if [ ! -f $VIRTDIR/bin/activate ]; then
echo "Setting up python virtualenv at /opt/home/$USER ..."
mkdir -p /opt/home/$USER
mkdir $VIRTDIR
virtualenv --system-site-packages $VIRTDIR
echo "Setting up python virtualenv at $VIRTDIR ..."
mkdir -p $VIRTDIR
python3.6 -m venv $VIRTDIR
echo -e "
# This is from $VIRTDIR/bin/activate, to activate the
# datatracker virtual python environment on docker container entry:
@ -103,7 +102,7 @@ echo "Activating the virtual python environment ..."
if ! python -c "import django"; then
echo "Installing requirements ..."
pip install -r /usr/local/share/datatracker/requirements.txt
pip install -r /usr/local/share/datatracker/requirements3.txt
fi
if [ ! -f $VIRTDIR/lib/site-python/settings_local.py ]; then

View file

@ -230,7 +230,8 @@ else
echo ""
echo "Committing changes in the container to an image:"
latest=$(docker ps -lq)
image=$( docker images -q $REPO:$TAG)
latest=$(docker ps -lq -f "ancestor=$image")
docker commit $latest $REPO:$TAG
echo ""
@ -239,7 +240,7 @@ else
DANGLING=$( docker images -f dangling=true -q )
if [ -n "$DANGLING" ]; then
echo "Dangling images: $DANGLING"
docker rmi -f $DANGLING;
docker rmi -f $DANGLING
fi
fi

View file

@ -1,4 +1,9 @@
import os
# Copyright The IETF Trust 2007-2019, All Rights Reserved
# -*- coding: utf-8 -*-
import six
if six.PY3:
from typing import Collection, Dict, List, Tuple # pyflakes:ignore
SECRET_KEY = 'jzv$o93h_lzw4a0%0oz-5t5lk+ai=3f8x@uo*9ahu8w4i300o6'
@ -9,7 +14,7 @@ DATABASES = {
'USER': 'django',
'PASSWORD': 'RkTkDPFnKpko',
},
}
} # type: Dict[str, Dict[str, Collection[str]]]
DATABASE_TEST_OPTIONS = {
'init_command': 'SET storage_engine=InnoDB',
@ -31,7 +36,7 @@ EMAIL_PORT=2025
TRAC_WIKI_DIR_PATTERN = "test/wiki/%s"
TRAC_SVN_DIR_PATTERN = "test/svn/%s"
TRAC_CREATE_ADHOC_WIKIS = [
]
] # type: List[Tuple[str, str, str]]
MEDIA_BASE_DIR = 'test'
MEDIA_ROOT = MEDIA_BASE_DIR + '/media/'
@ -49,45 +54,3 @@ SUBMIT_YANG_IANA_MODEL_DIR = 'data/developers/ietf-ftp/yang/ianamod/'
SUBMIT_YANGLINT_COMMAND = 'yanglint --verbose -p {rfclib} -p {draftlib} -p {tmplib} {model}'
API_PUBLIC_KEY_PEM = """
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuIm3wBpMEhFmy40ZBNHU
jn6cMVeDwynedDtww+071mQFIyidDn0UYCTfLn8dLQDpbdoreMz9Zzb0tMygMyMb
5fsOItkEd7J5jVqpPWqlvspaa5qb5zuB8NHAxRjPfomgn0Sl1Uvwl1Gc3N2UElCb
mJ+wEK+C55YVLj1k/9GU34G//XLcSnBF7bmjcycP+z8wkAtjE51ZR2Y6oP6o11jO
yL5X7Y+1Nk9cPlUbtrvmmyXEKnjUXbRUoK4CJ87dYjFk8CHWmqolY++bgp4Ro6gK
k6RAy1XaC6uCaVnlJQKpIZ8XvJyv34ku65KUuLQMlxBbVt7z+ybrMvU7NNpCVTGp
kwIDAQAB
-----END PUBLIC KEY-----
"""
API_PRIVATE_KEY_PEM = """
-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC4ibfAGkwSEWbL
jRkE0dSOfpwxV4PDKd50O3DD7TvWZAUjKJ0OfRRgJN8ufx0tAOlt2it4zP1nNvS0
zKAzIxvl+w4i2QR3snmNWqk9aqW+ylprmpvnO4Hw0cDFGM9+iaCfRKXVS/CXUZzc
3ZQSUJuYn7AQr4LnlhUuPWT/0ZTfgb/9ctxKcEXtuaNzJw/7PzCQC2MTnVlHZjqg
/qjXWM7Ivlftj7U2T1w+VRu2u+abJcQqeNRdtFSgrgInzt1iMWTwIdaaqiVj75uC
nhGjqAqTpEDLVdoLq4JpWeUlAqkhnxe8nK/fiS7rkpS4tAyXEFtW3vP7Jusy9Ts0
2kJVMamTAgMBAAECggEBAKV46EnbysaQ0ApKFVsbBGxZ35jnDoGcM5sqCa3GNlfC
DFFAg8SQKAsmRPIejXzjSm10qnKB7d/1iWvt6OCx5LxOaJia3MSwRwqXdxZZYRI5
xOakFpQ76gKVMzQJUVX39w2ZstIWbEBjsDLkhXf+y+cJmgj8OHeNPqTd7Ijv13yq
B8JVFhtrARTE9X5bxxl5FMrqchVv7HyCS6FBTK+rPPaE3gK2XyiNKHokcV2NfmeF
OHqqDn9LPN4ERRU13FNv5/wvH6/Z0AXsRWFkxuCdYcVzG9xEnf/72b0jumRqnSAN
bVK+/b37SOky/L0mwfXwhQoMvePgbYE1qv2Lx4maVcECgYEA5Im7Ys2FfFAGWV3Y
eNizNHmJYXuvLVsEEYtxT1tM/yPTvlljA27s5rrXdtRDS67Hnj28b9nrHp0COlZp
GycbppQcPEKiDupLlvstdQ+b+t1MO3xAqW2ZeM47A1SmPKa7XmTAL+6ZReeN/Eg6
QCmqY5HHANhX+OwN+zwAg9ZQlBECgYEAzrZ1qr8RBBP4/0NY3WMkAiJpluIOc6kO
8lP0tNk6FJ9OaIMAI6FKxh/7KKcgWzINWSVqz+8te5HUCUt5JWZXcn2NMkk2ufm4
4OV0vXz3ba6RhIXtDxJW9qbihhZ+EJYPvgwWUF3W1Onu4BuirD+74LSTWG8Ko3lK
m0qbAl5s92MCgYEAuJQxHwyE6jEr35O3GWtT2WbruSsPAd/Hum/X9VL1Lf/+rXc+
S/CUL4nqKdQoAgFIwhp0jhYAGrqOqRVPUJnWcEShRV4/yzIaGPgG78vKm+OOBWFG
TFDzqilOalM87DFxlTxkKJJZgqcQ+xhOy7GbJ03+30TcUHQ+mpIMjG5UqDECgYBG
yc8T0OiX1+seJ0cIUYokPPqh0/oU+6EFtWCIihdMtp1YRvxGN1bu8EbHTixTbpmJ
nLmuSX7u4SqWoET1XM23hG1U+iOGnpEEWy+WMHRfGDf3BRIAZkxnnRDX0F4NegYc
E/GURf5q3U2Ta4NSr2S8d7o5v5UKFGBLO8pHjmSMdwKBgQCbZMPV/ogqNbsuEXsP
rZQg+DTonX55os7Dnii715NAzzP7zaZ/RF/zEJrYKKATiaYFNIpz66wuAIX6UrcO
N1mb6IlkRXoou2mawSFAPuwOFyKHDfohlA7lCiUsgB40uc90pa1evX8tctSXOuzh
qlOfAYmntqZaggU8f3gGh7EPjw==
-----END PRIVATE KEY-----
"""