Skip to content

Commit 6e31552

Browse files
committed
Updated docker files to build and run an image based on devuan:ascii instead of debian:jessie.
- Legacy-Id: 16784
1 parent 4c28f69 commit 6e31552

4 files changed

Lines changed: 68 additions & 91 deletions

File tree

docker/Dockerfile

Lines changed: 53 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -19,23 +19,24 @@
1919
# but the database has *not* been loaded with a dump, and supporting files (drafts, charters, etc.)
2020
# have *not* been downloaded.
2121

22-
FROM debian:jessie
22+
FROM dyne/devuan:ascii
2323
LABEL maintainer="Henrik Levkowetz <henrik@levkowetz.com>"
2424

2525
# Default django runserver port
2626
EXPOSE 8000
2727

2828
# Run apt-get noninteractive
2929
ENV DEBIAN_FRONTEND=noninteractive
30+
ENV DEVUAN_FRONTEND=noninteractive
3031

3132
RUN apt-get update
3233
RUN apt-get install -qy apt-transport-https
3334

34-
# Use backports, updates, and security updates; over https if possible
35-
RUN echo "deb https://deb.debian.org/debian jessie main contrib non-free" > /etc/apt/sources.list
36-
RUN echo "deb https://deb.debian.org/debian jessie-backports main contrib non-free" >> /etc/apt/sources.list
37-
RUN echo "deb https://deb.debian.org/debian jessie-updates main contrib non-free" >> /etc/apt/sources.list
38-
RUN echo "deb http://security.debian.org/debian-security jessie/updates main contrib non-free" >> /etc/apt/sources.list
35+
# Use backports, updates, and security updates
36+
RUN echo "deb http://deb.devuan.org/merged ascii main contrib non-free" > /etc/apt/sources.list
37+
RUN echo "deb http://deb.devuan.org/merged ascii-security main contrib non-free" >> /etc/apt/sources.list
38+
RUN echo "deb http://deb.devuan.org/merged ascii-updates main contrib non-free" >> /etc/apt/sources.list
39+
RUN echo "deb http://deb.devuan.org/merged ascii-backports main contrib non-free" >> /etc/apt/sources.list
3940

4041
# Install needed packages
4142
#
@@ -44,27 +45,44 @@ RUN echo "deb http://security.debian.org/debian-security jessie/updates main con
4445
# 15%, about 100MB.
4546

4647
# Fetch apt package information, and upgrade to latest package versions
48+
4749
RUN apt-get update
4850
RUN apt-get -qy upgrade
4951

5052
# Install the packages we need
5153
RUN apt-get install -qy \
54+
build-essential \
5255
bzip2 \
5356
ca-certificates \
5457
colordiff \
5558
gawk \
5659
gcc \
5760
ipython \
61+
jq \
5862
less \
59-
libfreetype6 \
60-
libfontconfig \
63+
libbz2-dev \
64+
libdb5.3-dev \
65+
libexpat1-dev \
66+
libffi-dev \
67+
libgdbm-dev \
6168
libjpeg62-turbo-dev \
69+
liblzma-dev \
70+
libmagic1 \
71+
libmariadbclient-dev \
72+
libncurses5-dev \
73+
libncursesw5-dev \
74+
libreadline-dev \
75+
libsqlite3-dev \
76+
libssl-dev \
6277
libsvn1 \
6378
libxml2-dev \
6479
libxslt-dev \
6580
libz-dev \
6681
locales \
82+
make \
6783
man \
84+
mariadb-client \
85+
mariadb-server \
6886
openssh-client \
6987
patch \
7088
procps \
@@ -77,48 +95,27 @@ RUN apt-get install -qy \
7795
rsync \
7896
subversion \
7997
sudo \
98+
uuid-dev \
8099
vim \
81-
wget
82-
83-
# Install SystemV init
84-
RUN apt-get install -qy sysvinit-core \
85-
&& cp /usr/share/sysvinit/inittab /etc/inittab
86-
87-
# Get rid of systemd
88-
RUN apt-get remove --yes --purge --auto-remove systemd \
89-
&& echo -e "\nPackage: systemd\nPin: release *\nPin-Priority: -1\n" > /etc/apt/preferences.d/no-systemd
90-
91-
# ------------------------------------------------------------------------------
92-
# The following section is all about installing mysql server 5.6, instead of
93-
# 5.5 which is provided in jessie. It's a bit convoluted.
94-
# ------------------------------------------------------------------------------
95-
96-
# Get the key used to sign the mysql repo
97-
RUN gpg --keyserver pgp.mit.edu --recv-keys 5072E1F5
98-
RUN gpg --export -a 5072E1F5 | apt-key add -
99-
100-
# Install a package which will install apt sources entries for current mysql
101-
RUN echo 'mysql-apt-config mysql-apt-config/select-server select mysql-5.6' | debconf-set-selections
102-
RUN echo 'mysql-apt-config mysql-apt-config/repo-url string https://repo.mysql.com/apt/' | debconf-set-selections
103-
RUN echo "deb https://repo.mysql.com/apt/debian/ jessie mysql-apt-config" >> /etc/apt/sources.list.d/mysql-apt-config.list
104-
RUN apt-get update
105-
RUN apt-get install -qy mysql-apt-config
106-
RUN rm /etc/apt/sources.list.d/mysql-apt-config.list
100+
wget \
101+
xz-utils\
102+
zile \
103+
zlib1g-dev
107104

108105
# Get the key used to sign the libyang repo
109106
RUN wget -nv http://download.opensuse.org/repositories/home:liberouter/Debian_9.0/Release.key
110107
RUN apt-key add - < Release.key
111108
RUN rm Release.key
112109

113110
# Add apt source entry for libyang
114-
RUN echo "deb http://download.opensuse.org/repositories/home:/liberouter/Debian_8.0/ /" >> /etc/apt/sources.list.d/libyang.list
111+
RUN echo "deb http://download.opensuse.org/repositories/home:/liberouter/Debian_9.0/ /" >> /etc/apt/sources.list.d/libyang.list
115112

116113
# Update the package defs, and install the desired mysql from the mysql repo
117114
RUN apt-get update
118-
RUN apt-get install -qy mysql-community-server libmysqlclient-dev libyang
115+
RUN apt-get install -qy libyang
119116

120117
# This is expected to exist by the mysql startup scripts:
121-
RUN touch /etc/mysql/debian.cnf
118+
#RUN touch /etc/mysql/debian.cnf
122119
# ------------------------------------------------------------------------------
123120

124121
# 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 .
154151
ADD https://tools.ietf.org/tools/idnits/idnits /usr/local/bin/
155152
RUN chmod +rx /usr/local/bin/idnits
156153

154+
# # Python 3
155+
ENV PYVER=3.6.9
156+
ENV PYREV=3.6
157+
158+
WORKDIR /usr/src
159+
RUN wget -q https://www.python.org/ftp/python/$PYVER/Python-$PYVER.tar.xz
160+
RUN tar xJf Python-$PYVER.tar.xz
161+
RUN rm Python-$PYVER.tar.xz
162+
WORKDIR /usr/src/Python-$PYVER/
163+
RUN ./configure
164+
RUN make
165+
RUN make altinstall
166+
WORKDIR /usr/src
167+
RUN rm -rf /usr/src/Python-$PYVER/
168+
169+
ENV HOSTNAME="datatracker"
170+
157171
ENV DDIR="/usr/local/share/datatracker"
158172
RUN mkdir -p $DDIR
159173
WORKDIR $DDIR
160174

161-
COPY requirements.txt ./
162-
RUN pip --no-cache-dir install -r requirements.txt
175+
COPY requirements3.txt ./
176+
RUN pip$PYREV --no-cache-dir install -r requirements3.txt
163177

164178
COPY settings_local.py ./
165179
COPY setprompt ./

docker/docker-init.sh

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -84,10 +84,9 @@ fi
8484
VIRTDIR="/opt/home/$USER/$TAG"
8585
echo "Checking that there's a virtual environment for $TAG ..."
8686
if [ ! -f $VIRTDIR/bin/activate ]; then
87-
echo "Setting up python virtualenv at /opt/home/$USER ..."
88-
mkdir -p /opt/home/$USER
89-
mkdir $VIRTDIR
90-
virtualenv --system-site-packages $VIRTDIR
87+
echo "Setting up python virtualenv at $VIRTDIR ..."
88+
mkdir -p $VIRTDIR
89+
python3.6 -m venv $VIRTDIR
9190
echo -e "
9291
# This is from $VIRTDIR/bin/activate, to activate the
9392
# datatracker virtual python environment on docker container entry:
@@ -103,7 +102,7 @@ echo "Activating the virtual python environment ..."
103102

104103
if ! python -c "import django"; then
105104
echo "Installing requirements ..."
106-
pip install -r /usr/local/share/datatracker/requirements.txt
105+
pip install -r /usr/local/share/datatracker/requirements3.txt
107106
fi
108107

109108
if [ ! -f $VIRTDIR/lib/site-python/settings_local.py ]; then

docker/run

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,8 @@ else
230230

231231
echo ""
232232
echo "Committing changes in the container to an image:"
233-
latest=$(docker ps -lq)
233+
image=$( docker images -q $REPO:$TAG)
234+
latest=$(docker ps -lq -f "ancestor=$image")
234235
docker commit $latest $REPO:$TAG
235236

236237
echo ""
@@ -239,7 +240,7 @@ else
239240
DANGLING=$( docker images -f dangling=true -q )
240241
if [ -n "$DANGLING" ]; then
241242
echo "Dangling images: $DANGLING"
242-
docker rmi -f $DANGLING;
243+
docker rmi -f $DANGLING
243244
fi
244245

245246
fi

docker/settings_local.py

Lines changed: 8 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
import os
1+
# Copyright The IETF Trust 2007-2019, All Rights Reserved
2+
# -*- coding: utf-8 -*-
3+
4+
import six
5+
if six.PY3:
6+
from typing import Collection, Dict, List, Tuple # pyflakes:ignore
27

38
SECRET_KEY = 'jzv$o93h_lzw4a0%0oz-5t5lk+ai=3f8x@uo*9ahu8w4i300o6'
49

@@ -9,7 +14,7 @@
914
'USER': 'django',
1015
'PASSWORD': 'RkTkDPFnKpko',
1116
},
12-
}
17+
} # type: Dict[str, Dict[str, Collection[str]]]
1318

1419
DATABASE_TEST_OPTIONS = {
1520
'init_command': 'SET storage_engine=InnoDB',
@@ -31,7 +36,7 @@
3136
TRAC_WIKI_DIR_PATTERN = "test/wiki/%s"
3237
TRAC_SVN_DIR_PATTERN = "test/svn/%s"
3338
TRAC_CREATE_ADHOC_WIKIS = [
34-
]
39+
] # type: List[Tuple[str, str, str]]
3540

3641
MEDIA_BASE_DIR = 'test'
3742
MEDIA_ROOT = MEDIA_BASE_DIR + '/media/'
@@ -49,45 +54,3 @@
4954
SUBMIT_YANGLINT_COMMAND = 'yanglint --verbose -p {rfclib} -p {draftlib} -p {tmplib} {model}'
5055

5156

52-
API_PUBLIC_KEY_PEM = """
53-
-----BEGIN PUBLIC KEY-----
54-
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuIm3wBpMEhFmy40ZBNHU
55-
jn6cMVeDwynedDtww+071mQFIyidDn0UYCTfLn8dLQDpbdoreMz9Zzb0tMygMyMb
56-
5fsOItkEd7J5jVqpPWqlvspaa5qb5zuB8NHAxRjPfomgn0Sl1Uvwl1Gc3N2UElCb
57-
mJ+wEK+C55YVLj1k/9GU34G//XLcSnBF7bmjcycP+z8wkAtjE51ZR2Y6oP6o11jO
58-
yL5X7Y+1Nk9cPlUbtrvmmyXEKnjUXbRUoK4CJ87dYjFk8CHWmqolY++bgp4Ro6gK
59-
k6RAy1XaC6uCaVnlJQKpIZ8XvJyv34ku65KUuLQMlxBbVt7z+ybrMvU7NNpCVTGp
60-
kwIDAQAB
61-
-----END PUBLIC KEY-----
62-
"""
63-
64-
API_PRIVATE_KEY_PEM = """
65-
-----BEGIN PRIVATE KEY-----
66-
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC4ibfAGkwSEWbL
67-
jRkE0dSOfpwxV4PDKd50O3DD7TvWZAUjKJ0OfRRgJN8ufx0tAOlt2it4zP1nNvS0
68-
zKAzIxvl+w4i2QR3snmNWqk9aqW+ylprmpvnO4Hw0cDFGM9+iaCfRKXVS/CXUZzc
69-
3ZQSUJuYn7AQr4LnlhUuPWT/0ZTfgb/9ctxKcEXtuaNzJw/7PzCQC2MTnVlHZjqg
70-
/qjXWM7Ivlftj7U2T1w+VRu2u+abJcQqeNRdtFSgrgInzt1iMWTwIdaaqiVj75uC
71-
nhGjqAqTpEDLVdoLq4JpWeUlAqkhnxe8nK/fiS7rkpS4tAyXEFtW3vP7Jusy9Ts0
72-
2kJVMamTAgMBAAECggEBAKV46EnbysaQ0ApKFVsbBGxZ35jnDoGcM5sqCa3GNlfC
73-
DFFAg8SQKAsmRPIejXzjSm10qnKB7d/1iWvt6OCx5LxOaJia3MSwRwqXdxZZYRI5
74-
xOakFpQ76gKVMzQJUVX39w2ZstIWbEBjsDLkhXf+y+cJmgj8OHeNPqTd7Ijv13yq
75-
B8JVFhtrARTE9X5bxxl5FMrqchVv7HyCS6FBTK+rPPaE3gK2XyiNKHokcV2NfmeF
76-
OHqqDn9LPN4ERRU13FNv5/wvH6/Z0AXsRWFkxuCdYcVzG9xEnf/72b0jumRqnSAN
77-
bVK+/b37SOky/L0mwfXwhQoMvePgbYE1qv2Lx4maVcECgYEA5Im7Ys2FfFAGWV3Y
78-
eNizNHmJYXuvLVsEEYtxT1tM/yPTvlljA27s5rrXdtRDS67Hnj28b9nrHp0COlZp
79-
GycbppQcPEKiDupLlvstdQ+b+t1MO3xAqW2ZeM47A1SmPKa7XmTAL+6ZReeN/Eg6
80-
QCmqY5HHANhX+OwN+zwAg9ZQlBECgYEAzrZ1qr8RBBP4/0NY3WMkAiJpluIOc6kO
81-
8lP0tNk6FJ9OaIMAI6FKxh/7KKcgWzINWSVqz+8te5HUCUt5JWZXcn2NMkk2ufm4
82-
4OV0vXz3ba6RhIXtDxJW9qbihhZ+EJYPvgwWUF3W1Onu4BuirD+74LSTWG8Ko3lK
83-
m0qbAl5s92MCgYEAuJQxHwyE6jEr35O3GWtT2WbruSsPAd/Hum/X9VL1Lf/+rXc+
84-
S/CUL4nqKdQoAgFIwhp0jhYAGrqOqRVPUJnWcEShRV4/yzIaGPgG78vKm+OOBWFG
85-
TFDzqilOalM87DFxlTxkKJJZgqcQ+xhOy7GbJ03+30TcUHQ+mpIMjG5UqDECgYBG
86-
yc8T0OiX1+seJ0cIUYokPPqh0/oU+6EFtWCIihdMtp1YRvxGN1bu8EbHTixTbpmJ
87-
nLmuSX7u4SqWoET1XM23hG1U+iOGnpEEWy+WMHRfGDf3BRIAZkxnnRDX0F4NegYc
88-
E/GURf5q3U2Ta4NSr2S8d7o5v5UKFGBLO8pHjmSMdwKBgQCbZMPV/ogqNbsuEXsP
89-
rZQg+DTonX55os7Dnii715NAzzP7zaZ/RF/zEJrYKKATiaYFNIpz66wuAIX6UrcO
90-
N1mb6IlkRXoou2mawSFAPuwOFyKHDfohlA7lCiUsgB40uc90pa1evX8tctSXOuzh
91-
qlOfAYmntqZaggU8f3gGh7EPjw==
92-
-----END PRIVATE KEY-----
93-
"""

0 commit comments

Comments
 (0)