aboutsummaryrefslogtreecommitdiff
path: root/netbox/Dockerfile
blob: 022aebf0991b24acc30d414bb1e0cc2e195a4c96 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
FROM alpine:latest
LABEL maintainer="Mike Crute <mike@crute.us>"

ARG netbox_version

ADD config-patch1.diff /config-patch1.diff
ADD config-patch2.diff /config-patch2.diff
ADD settings-patch.diff /settings-patch.diff

RUN set -euxo pipefail; \
    \
    apk --no-cache add \
        build-base \
        dumb-init \
        jpeg-dev \
        libffi-dev \
        libxml2-dev \
        libxslt-dev \
        openssl-dev \
        postgresql-dev \
        py3-pip \
        python3-dev \
        runit \
        su-exec \
        uwsgi \
        uwsgi-python \
        zlib-dev \
    ; \
    cd /tmp; \
    wget "https://github.com/netbox-community/netbox/archive/v${netbox_version}.tar.gz"; \
    tar -xvf "v${netbox_version}.tar.gz" -C /opt; \
    rm "v${netbox_version}.tar.gz"; \
    mv /opt/netbox-${netbox_version}/ /opt/netbox/; \
    \
    cd /; \
    cp /opt/netbox/netbox/netbox/configuration.example.py /opt/netbox/netbox/netbox/configuration.py; \
    patch -p1 < /config-patch1.diff; \
    rm /config-patch1.diff; \
    \
    addgroup -S netbox; \
    adduser -S -G netbox netbox; \
    chown -R netbox:netbox /opt/netbox/netbox/media; \
    \
    cd /opt/netbox; \
    pip3 install wheel; \
    pip3 install -r requirements.txt; \
    \
    python3 netbox/manage.py collectstatic --no-input; \
    \
    cd /; \
    cp /opt/netbox/netbox/netbox/configuration.example.py /opt/netbox/netbox/netbox/configuration.py; \
    patch -p1 < /config-patch2.diff; \
    rm /config-patch2.diff; \
    \
    patch -p1 < /settings-patch.diff; \
    rm /settings-patch.diff; \
    \
    mkdir -p /usr/lib/python3.8/site-packages/django/db/backends/postgresqlvault; \
    touch /usr/lib/python3.8/site-packages/django/db/backends/postgresqlvault/__init__.py; \
    \
    rm -rf /root/.cache; \
    apk --no-cache del --purge \
        build-base \
    ;

ADD django-vault-client.py /usr/lib/python3.8/site-packages/django/contrib/vault_client.py
ADD django-driver.py /usr/lib/python3.8/site-packages/django/db/backends/postgresqlvault/base.py
ADD etc/ /etc/
ADD entrypoint.sh /entrypoint.sh

STOPSIGNAL SIGHUP
ENTRYPOINT [ "/entrypoint.sh" ]
CMD [ "/usr/bin/dumb-init", "/sbin/runsvdir", "/etc/service" ]