013f81b791
One container should ideally have one responsibility [1]. Therefore I implemented the netbox-worker to start in it's own container. This is possible, because netbox and the worker communicate via redis anyway. They still use the same image underneath, just the "command" they execute while starting different. Or in other words: I see no reason to introduce supervisord, when we already have docker-compose which can take care of running multiple processes. Also, here's another benefit: Now it's possible to view the logs of the webhook worker independently of the other netbox logs (and vice-versa). Other changes in this commit: * I don't see a reason to put a password for Redis in the docker-compose setup, so I removed it. * Slightly changed the nginx config, so that the nginx startup command becomes simpler and any error should be visible in the docker log. * Some housekeeping in the `Dockerfile`. * Added some troubleshooting advice regarding webhooks to the README. I'd like to thank Brady (@bdlamprecht [2]) here who did the harder work of figuring out what's even required to have webhooks working. [3] [1] https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#decouple-applications [2] https://github.com/bdlamprecht [3] https://github.com/ninech/netbox-docker/pull/90
61 lines
1.7 KiB
Docker
61 lines
1.7 KiB
Docker
FROM python:3.6-alpine3.7
|
|
|
|
RUN apk add --no-cache \
|
|
bash \
|
|
build-base \
|
|
ca-certificates \
|
|
cyrus-sasl-dev \
|
|
graphviz \
|
|
jpeg-dev \
|
|
libffi-dev \
|
|
libxml2-dev \
|
|
libxslt-dev \
|
|
openldap-dev \
|
|
postgresql-dev \
|
|
ttf-ubuntu-font-family \
|
|
wget
|
|
|
|
RUN pip install \
|
|
# gunicorn is used for launching netbox
|
|
gunicorn \
|
|
# napalm is used for gathering information from network devices
|
|
napalm \
|
|
# ruamel is used in startup_scripts
|
|
ruamel.yaml \
|
|
# if the Django package is not installed here to this pinned version
|
|
# django-rq will install the latest version (currently 2.1)
|
|
# then, when the requirements.txt of netbox is run, it will be
|
|
# uninstalled because it currently causes problems with netbox
|
|
Django==2.0.8 \
|
|
# django-rq is used for webhooks
|
|
django-rq
|
|
|
|
WORKDIR /opt
|
|
|
|
ARG BRANCH=master
|
|
ARG URL=https://github.com/digitalocean/netbox/archive/$BRANCH.tar.gz
|
|
RUN wget -q -O - "${URL}" | tar xz \
|
|
&& mv netbox* netbox
|
|
|
|
WORKDIR /opt/netbox
|
|
RUN pip install -r requirements.txt
|
|
|
|
COPY docker/configuration.docker.py /opt/netbox/netbox/netbox/configuration.py
|
|
COPY configuration/gunicorn_config.py /etc/netbox/config/
|
|
COPY docker/nginx.conf /etc/netbox-nginx/nginx.conf
|
|
COPY docker/docker-entrypoint.sh docker-entrypoint.sh
|
|
COPY startup_scripts/ /opt/netbox/startup_scripts/
|
|
COPY initializers/ /opt/netbox/initializers/
|
|
COPY configuration/configuration.py /etc/netbox/config/configuration.py
|
|
|
|
WORKDIR /opt/netbox/netbox
|
|
|
|
ENTRYPOINT [ "/opt/netbox/docker-entrypoint.sh" ]
|
|
|
|
CMD ["gunicorn", "-c /etc/netbox/config/gunicorn_config.py", "netbox.wsgi"]
|
|
|
|
LABEL SRC_URL="$URL"
|
|
|
|
ARG NETBOX_DOCKER_PROJECT_VERSION=snapshot
|
|
LABEL NETBOX_DOCKER_PROJECT_VERSION="$NETBOX_DOCKER_PROJECT_VERSION"
|