
The idea: - all nodes generate their config in /etc/nginx/node.conf.d/HOSTNAME.conf - a python script can read all configs and merge them into one and reload nginx - using entr in Procfile, anytime any of these config change, they are merged immediately - the default nginx reload on notify is being removed to prevent from reloading twice
45 lines
1.5 KiB
Docker
45 lines
1.5 KiB
Docker
FROM nginx:1.17.8
|
|
MAINTAINER Jonathan Adami <contact@jadami.com>
|
|
LABEL creator="Jason Wilder mail@jasonwilder.com"
|
|
|
|
# Install python with crossplane, wget, entr and install/updates certificates
|
|
RUN apt-get update \
|
|
&& apt-get install -y -q --no-install-recommends \
|
|
ca-certificates \
|
|
wget \
|
|
entr \
|
|
python3 python3-pip \
|
|
&& pip3 crossplane \
|
|
&& apt-get purge -y python3-pip \
|
|
&& apt autoremove -y
|
|
&& apt-get clean \
|
|
&& rm -r /var/lib/apt/lists/*
|
|
|
|
# Configure Nginx and apply fix for very long server names
|
|
RUN echo "daemon off;" >> /etc/nginx/nginx.conf \
|
|
&& sed -i 's/worker_processes 1/worker_processes auto/' /etc/nginx/nginx.conf \
|
|
&& rm /etc/nginx/conf.d/default.conf \
|
|
&& mkdir /etc/nginx/node.conf.d \
|
|
&& echo "http { include ./*.conf; }" > /etc/nginx/node.conf.d/swarm.conf
|
|
|
|
# Install Forego
|
|
ADD https://github.com/jwilder/forego/releases/download/v0.16.1/forego /usr/local/bin/forego
|
|
RUN chmod u+x /usr/local/bin/forego
|
|
|
|
ENV DOCKER_GEN_VERSION 0.7.4
|
|
|
|
RUN wget https://github.com/jwilder/docker-gen/releases/download/$DOCKER_GEN_VERSION/docker-gen-linux-amd64-$DOCKER_GEN_VERSION.tar.gz \
|
|
&& tar -C /usr/local/bin -xvzf docker-gen-linux-amd64-$DOCKER_GEN_VERSION.tar.gz \
|
|
&& rm /docker-gen-linux-amd64-$DOCKER_GEN_VERSION.tar.gz
|
|
|
|
COPY network_internal.conf /etc/nginx/
|
|
|
|
COPY . /app/
|
|
WORKDIR /app/
|
|
|
|
ENV DOCKER_HOST unix:///tmp/docker.sock
|
|
|
|
VOLUME ["/etc/nginx/certs", "/etc/nginx/dhparam", "/etc/nginx/static_files", "/etc/nginx/node.conf.d"]
|
|
|
|
ENTRYPOINT ["/app/docker-entrypoint.sh"]
|
|
CMD ["forego", "start", "-r"]
|