forked from chrysa/pre-commit-tools
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile
111 lines (71 loc) · 4.53 KB
/
Dockerfile
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
# syntax=docker/dockerfile:1.4
ARG NETWORK
ARG SCRIPT_LOCATION="/scripts"
ARG TRAEFIK_ROOT="/etc/traefik"
ARG VOLUMES="/volumes"
ARG BOOTSTRAPED_FOLDER="${VOLUMES}/bootstrap/reverse-proxy"
ARG BOOTSTRAPED_GRAFANA_FILE_PATH="${BOOTSTRAPED_FOLDER}/grafana"
ARG BOOTSTRAPED_LDAP_FILE_PATH="${BOOTSTRAPED_FOLDER}/ldap"
ARG BOOTSTRAPED_REVERSE_PROXY_FILE_PATH="${BOOTSTRAPED_FOLDER}/reverse_proxy"
ARG CONFIG_FILE="${TRAEFIK_ROOT}/traefik.yaml"
ARG GRAFANA_DASHBOARDS="${VOLUMES}/grafana/dashboards"
ARG LDIFS_DIR="${VOLUMES}/openldap/ldifs"
ARG NOT_MOUNTED="${VOLUMES}/not-mounted"
ARG TMP_LDIFS_DIR="${NOT_MOUNTED}/openldap/ldifs"
ARG TMP_GRAFANA_DASHBOARDS="${NOT_MOUNTED}/grafana/dashboards"
ARG TMP_REVERSE_PROXY_DIR="${NOT_MOUNTED}/reverse-proxy"
ARG TRAEFIK_VERSION
FROM traefik:v${TRAEFIK_VERSION} as base
RUN set -ex pipefail && apk add --quiet --update --no-cache bash
FROM base as reverse-proxy
ARG API_DASHBOARD
ARG API_DEBUG
ARG CONFIG_FILE
ARG LDAP_BASE_DN
ARG LDAP_HOST
ARG LDAP_PORT
ARG LOG_LEVEL
ARG NETWORK
ARG NOT_MOUNTED
ARG REVERSE_PROXY_ENTRYPOINT
ARG REVERSE_PROXY_LDAP_GROUP
ARG TMP_REVERSE_PROXY_DIR
ARG TRAEFIK_ROOT
ARG URL
ARG WEB_SCHEMA
SHELL ["/bin/bash", "-heoux", "pipefail", "-c"]
COPY ./config/reverse-proxy ${TMP_REVERSE_PROXY_DIR}
RUN sed -i "s;%CONFIG_FOLDER%;${TRAEFIK_ROOT};g" ${TMP_REVERSE_PROXY_DIR}/*.y*ml ${TMP_REVERSE_PROXY_DIR}/**/*.y*ml && sed -i "s;%URL%;${URL};" ${TMP_REVERSE_PROXY_DIR}/*.y*ml ${TMP_REVERSE_PROXY_DIR}/**/*.y*ml && sed -i "s/%REVERSE_PROXY_ENTRYPOINT%/${REVERSE_PROXY_ENTRYPOINT}/g" ${TMP_REVERSE_PROXY_DIR}/*.y*ml ${TMP_REVERSE_PROXY_DIR}/**/*.y*ml && sed -i "s/%API_DASHBOARD%/${API_DASHBOARD}/g" ${TMP_REVERSE_PROXY_DIR}/*.y*ml ${TMP_REVERSE_PROXY_DIR}/**/*.y*ml && sed -i "s/%API_DEBUG%/${API_DEBUG}/g" ${TMP_REVERSE_PROXY_DIR}/*.y*ml ${TMP_REVERSE_PROXY_DIR}/**/*.y*ml && sed -i "s/%LDAP_BASE_DN%/${LDAP_BASE_DN}/g" ${TMP_REVERSE_PROXY_DIR}/*.y*ml ${TMP_REVERSE_PROXY_DIR}/**/*.y*ml && sed -i "s/%LDAP_HOST%/${LDAP_HOST}/g" ${TMP_REVERSE_PROXY_DIR}/*.y*ml ${TMP_REVERSE_PROXY_DIR}/**/*.y*ml && sed -i "s/%LOG_LEVEL%/${LOG_LEVEL}/g" ${TMP_REVERSE_PROXY_DIR}/*.y*ml ${TMP_REVERSE_PROXY_DIR}/**/*.y*ml && sed -i "s/%LDAP_PORT%/${LDAP_PORT}/g" ${TMP_REVERSE_PROXY_DIR}/*.y*ml ${TMP_REVERSE_PROXY_DIR}/**/*.y*ml && sed -i "s/%REVERSE_PROXY_LDAP_GROUP%/${REVERSE_PROXY_LDAP_GROUP}/g" ${TMP_REVERSE_PROXY_DIR}/*.y*ml ${TMP_REVERSE_PROXY_DIR}/**/*.y*ml && sed -i "s/%NETWORK%/${NETWORK}/g" ${TMP_REVERSE_PROXY_DIR}/*.y*ml ${TMP_REVERSE_PROXY_DIR}/**/*.y*ml && sed -i "s/%WEB_SCHEMA%/${WEB_SCHEMA}/g" ${TMP_REVERSE_PROXY_DIR}/*.y*ml ${TMP_REVERSE_PROXY_DIR}/**/*.y*ml
FROM reverse-proxy as ldifs
ARG LDAP_BASE_DN
ARG LDAP_READONLY_CN
ARG REVERSE_PROXY_LDAP_GROUP
ARG TMP_LDIFS_DIR
COPY ./config/openldap/ldif/ ${TMP_LDIFS_DIR}/
RUN sed -i "s/%REVERSE_PROXY_LDAP_GROUP%/${REVERSE_PROXY_LDAP_GROUP}/g" ${TMP_LDIFS_DIR}/*.ldif && sed -i "s/%LDAP_BASE_DN%/${LDAP_BASE_DN}/g" ${TMP_LDIFS_DIR}/*.ldif && sed -i "s/%LDAP_READONLY_CN%/${LDAP_READONLY_CN}/g" ${TMP_LDIFS_DIR}/*.ldif
FROM ldifs as grafana
ARG TMP_GRAFANA_DASHBOARDS
ADD https://grafana.com/api/dashboards/10479 ${TMP_GRAFANA_DASHBOARDS}/traefik-metrics.json
ADD https://grafana.com/api/dashboards/11462 ${TMP_GRAFANA_DASHBOARDS}/traefik-2.json
ADD https://grafana.com/api/dashboards/12250 ${TMP_GRAFANA_DASHBOARDS}/traefik-2-2.json
FROM grafana as scripts
ARG SCRIPT_LOCATION
COPY ./scripts/ ${SCRIPT_LOCATION}
RUN set -x && find ${SCRIPT_LOCATION} -name "*.sh" -exec chmod +x {} \;
FROM scripts as set_env
ARG BOOTSTRAPED_FOLDER
ARG BOOTSTRAPED_LDAP_FILE_PATH
ARG BOOTSTRAPED_REVERSE_PROXY_FILE_PATH
ARG CONFIG_FILE
ARG GRAFANA_DASHBOARDS
ARG BOOTSTRAPED_GRAFANA_FILE_PATH
ARG LDIFS_DIR
ARG NOT_MOUNTED
ARG SCRIPT_LOCATION
ARG TMP_GRAFANA_DASHBOARDS
ARG TMP_LDIFS_DIR
ARG TMP_REVERSE_PROXY_DIR
ARG TRAEFIK_ROOT
ENV BOOTSTRAPED_FOLDER=${BOOTSTRAPED_FOLDER} BOOTSTRAPED_LDAP_FILE_PATH=${BOOTSTRAPED_LDAP_FILE_PATH} BOOTSTRAPED_REVERSE_PROXY_FILE_PATH=${BOOTSTRAPED_REVERSE_PROXY_FILE_PATH} CONFIG_FILE=${CONFIG_FILE} GRAFANA_DASHBOARDS=${GRAFANA_DASHBOARDS} BOOTSTRAPED_GRAFANA_FILE_PATH=${BOOTSTRAPED_GRAFANA_FILE_PATH} LDIFS_DIR=${LDIFS_DIR} NOT_MOUNTED=${NOT_MOUNTED} SCRIPT_LOCATION=${SCRIPT_LOCATION} TMP_GRAFANA_DASHBOARDS=${TMP_GRAFANA_DASHBOARDS} TMP_LDIFS_DIR=${TMP_LDIFS_DIR} TMP_REVERSE_PROXY_DIR=${TMP_REVERSE_PROXY_DIR} TRAEFIK_ROOT=${TRAEFIK_ROOT} TZ=Europe/Paris
ENTRYPOINT ["/scripts/entrypoint.sh"]
HEALTHCHECK --interval=1m --timeout=30s --retries=10 --start-period=10s CMD traefik healthcheck || exit 1