11ARG FROM
22FROM ${FROM} as builder
33
4- RUN apk add --no-cache \
5- bash \
6- build-base \
7- cargo \
4+ ENV DEBIAN_FRONTEND=noninteractive
5+ RUN apt-get update -qq \
6+ && apt-get install \
7+ --yes -qq --no-install-recommends \
8+ build-essential \
89 ca-certificates \
9- cmake \
10- cyrus-sasl-dev \
11- git \
1210 graphviz \
13- jpeg-dev \
1411 libevent-dev \
1512 libffi-dev \
16- libxslt -dev \
17- make \
18- musl -dev \
19- openldap -dev \
20- postgresql -dev \
21- py3-pip \
13+ libjpeg -dev \
14+ libldap-dev \
15+ libsasl2 -dev \
16+ libxslt1 -dev \
17+ libxml2 -dev \
18+ postgresql-13 \
2219 python3-dev \
20+ python3-pip \
21+ python3-venv \
2322 && python3 -m venv /opt/netbox/venv \
2423 && /opt/netbox/venv/bin/python3 -m pip install --upgrade \
2524 pip \
2625 setuptools \
2726 wheel
2827
29- # Build libcrc32c for google-crc32c python module
30- RUN git clone https://github.com/google/crc32c \
31- && cd crc32c \
32- && git submodule update --init --recursive \
33- && mkdir build \
34- && cd build \
35- && cmake \
36- -DCMAKE_BUILD_TYPE=Release \
37- -DCRC32C_BUILD_TESTS=no \
38- -DCRC32C_BUILD_BENCHMARKS=no \
39- -DBUILD_SHARED_LIBS=yes \
40- .. \
41- && make all install
28+ WORKDIR /opt/netbox/
4229
4330ARG NETBOX_PATH
4431COPY ${NETBOX_PATH}/requirements.txt requirements-container.txt /
@@ -53,34 +40,39 @@ RUN /opt/netbox/venv/bin/pip install \
5340ARG FROM
5441FROM ${FROM} as main
5542
56- RUN apk add --no-cache \
57- bash \
43+ ENV DEBIAN_FRONTEND=noninteractive
44+ RUN . /etc/os-release \
45+ && apt-get update -qq \
46+ && apt-get upgrade \
47+ --yes -qq --no-install-recommends \
48+ && apt-get install \
49+ --yes -qq --no-install-recommends \
5850 ca-certificates \
5951 curl \
60- graphviz \
61- libevent \
62- libffi \
63- libjpeg-turbo \
64- libxslt \
6552 openssl \
66- postgresql-libs \
67- py3-pip \
6853 python3 \
69- tini \
54+ python3-distutils \
55+ && curl -sL https://nginx.org/keys/nginx_signing.key | \
56+ tee /etc/apt/trusted.gpg.d/nginx.asc \
57+ && echo "deb https://packages.nginx.org/unit/debian/ ${VERSION_CODENAME} unit" | \
58+ tee /etc/apt/sources.list.d/unit.list \
59+ && apt-get update -qq \
60+ && apt-get install \
61+ --yes -qq --no-install-recommends \
7062 unit \
71- unit-python3
63+ unit-python3.9 \
64+ tini \
65+ && rm -rf /var/lib/apt/lists/*
7266
7367WORKDIR /opt
7468
75- COPY --from=builder /usr/local/lib/libcrc32c.* /usr/local/lib/
76- COPY --from=builder /usr/local/include/crc32c /usr/local/include
77- COPY --from=builder /usr/local/lib/cmake/Crc32c /usr/local/lib/cmake/
7869COPY --from=builder /opt/netbox/venv /opt/netbox/venv
7970
8071ARG NETBOX_PATH
8172COPY ${NETBOX_PATH} /opt/netbox
8273
8374COPY docker/configuration.docker.py /opt/netbox/netbox/netbox/configuration.py
75+ COPY docker/ldap_config.docker.py /opt/netbox/netbox/netbox/ldap_config.py
8476COPY docker/docker-entrypoint.sh /opt/netbox/docker-entrypoint.sh
8577COPY docker/housekeeping.sh /opt/netbox/housekeeping.sh
8678COPY docker/launch-netbox.sh /opt/netbox/launch-netbox.sh
@@ -89,36 +81,25 @@ COPY initializers/ /opt/netbox/initializers/
8981COPY configuration/ /etc/netbox/config/
9082COPY docker/nginx-unit.json /etc/unit/
9183
92- WORKDIR /opt/netbox/netbox
84+ WORKDIR /opt/netbox
9385
9486# Must set permissions for '/opt/netbox/netbox/media' directory
9587# to g+w so that pictures can be uploaded to netbox.
9688RUN mkdir -p static /opt/unit/state/ /opt/unit/tmp/ \
97- && chmod -R g+w media /opt/unit/ \
98- && cd /opt/netbox/ && /opt/netbox/venv/bin/python -m mkdocs build \
89+ && chmod -R g+w /opt/netbox/netbox/ media /opt/unit/ \
90+ && /opt/netbox/venv/bin/python -m mkdocs build \
9991 --config-file /opt/netbox/mkdocs.yml --site-dir /opt/netbox/netbox/project-static/docs/ \
10092 && SECRET_KEY="dummy" /opt/netbox/venv/bin/python /opt/netbox/netbox/manage.py collectstatic --no-input
10193
102- ENTRYPOINT [ "/sbin/tini" , "--" ]
94+ WORKDIR /opt/netbox/netbox
95+ ENTRYPOINT [ "/usr/bin/tini" , "--" ]
10396
10497CMD [ "/opt/netbox/docker-entrypoint.sh" , "/opt/netbox/launch-netbox.sh" ]
10598
10699LABEL ORIGINAL_TAG="" \
107100 NETBOX_GIT_BRANCH="" \
108101 NETBOX_GIT_REF="" \
109102 NETBOX_GIT_URL="" \
110- # See http://label-schema.org/rc1/#build-time-labels
111- # Also https://microbadger.com/labels
112- org.label-schema.schema-version="1.0" \
113- org.label-schema.build-date="" \
114- org.label-schema.name="NetBox Docker" \
115- org.label-schema.description="A container based distribution of NetBox, the free and open IPAM and DCIM solution." \
116- org.label-schema.vendor="The netbox-docker contributors." \
117- org.label-schema.url="https://github.com/netbox-community/netbox-docker" \
118- org.label-schema.usage="https://github.com/netbox-community/netbox-docker/wiki" \
119- org.label-schema.vcs-url="https://github.com/netbox-community/netbox-docker.git" \
120- org.label-schema.vcs-ref="" \
121- org.label-schema.version="snapshot" \
122103# See https://github.com/opencontainers/image-spec/blob/master/annotations.md#pre-defined-annotation-keys
123104 org.opencontainers.image.created="" \
124105 org.opencontainers.image.title="NetBox Docker" \
@@ -131,16 +112,3 @@ LABEL ORIGINAL_TAG="" \
131112 org.opencontainers.image.source="https://github.com/netbox-community/netbox-docker.git" \
132113 org.opencontainers.image.revision="" \
133114 org.opencontainers.image.version="snapshot"
134-
135- # ####
136- # # LDAP specific configuration
137- # ####
138-
139- FROM main as ldap
140-
141- RUN apk add --no-cache \
142- libsasl \
143- libldap \
144- util-linux
145-
146- COPY docker/ldap_config.docker.py /opt/netbox/netbox/netbox/ldap_config.py
0 commit comments