Apply suggestions from code review

Co-authored-by: Márk Sági-Kazár <sagikazarmark@users.noreply.github.com>
Signed-off-by: m.nabokikh <maksim.nabokikh@flant.com>
This commit is contained in:
Maksim Nabokikh 2021-01-29 01:48:30 +04:00 committed by m.nabokikh
parent d43053e11c
commit 226c91df06
4 changed files with 45 additions and 39 deletions

View file

@ -7,16 +7,11 @@ RUN apk add --no-cache --update alpine-sdk
ARG TARGETOS ARG TARGETOS
ARG TARGETARCH ARG TARGETARCH
ARG TARGETVARIANT="" ARG TARGETVARIANT=""
ARG GOMPLATE_VERSION=v3.9.0
ENV GOOS=${TARGETOS} GOARCH=${TARGETARCH} GOARM=${TARGETVARIANT} ENV GOOS=${TARGETOS} GOARCH=${TARGETARCH} GOARM=${TARGETVARIANT}
ARG GOPROXY ARG GOPROXY
RUN wget -O /usr/local/bin/gomplate \
"https://github.com/hairyhenderson/gomplate/releases/download/${GOMPLATE_VERSION}/gomplate_${GOOS:-linux}-${GOARCH:-amd64}${GOARM}" \
&& chmod +x /usr/local/bin/gomplate
COPY go.mod go.sum ./ COPY go.mod go.sum ./
COPY api/v2/go.mod api/v2/go.sum ./api/v2/ COPY api/v2/go.mod api/v2/go.sum ./api/v2/
RUN go mod download RUN go mod download
@ -27,26 +22,31 @@ RUN make release-binary
FROM alpine:3.13.1 FROM alpine:3.13.1
ARG TARGETOS="linux"
ARG TARGETARCH="amd64"
ARG TARGETVARIANT=""
ARG GOMPLATE_VERSION=v3.9.0
# Dex connectors, such as GitHub and Google logins require root certificates. # Dex connectors, such as GitHub and Google logins require root certificates.
# Proper installations should manage those certificates, but it's a bad user # Proper installations should manage those certificates, but it's a bad user
# experience when this doesn't work out of the box. # experience when this doesn't work out of the box.
# #
# OpenSSL is required so wget can query HTTPS endpoints for health checking. # OpenSSL is required so wget can query HTTPS endpoints for health checking.
RUN apk add --no-cache --update ca-certificates openssl RUN apk add --no-cache --update ca-certificates openssl
RUN wget -O /usr/local/bin/gomplate \
"https://github.com/hairyhenderson/gomplate/releases/download/${GOMPLATE_VERSION}/gomplate_${TARGETOS}-${TARGETARCH}${TARGETVARIANT}" \
&& chmod +x /usr/local/bin/gomplate
RUN mkdir -p /var/dex RUN mkdir -p /var/dex
RUN chown -R 1001:1001 /var/dex RUN chown -R 1001:1001 /var/dex
RUN mkdir -p /etc/dex RUN mkdir -p /etc/dex
COPY examples/config-example.tmpl /etc/dex/config.tmpl COPY config.docker.yaml /etc/dex/config.docker.yaml
RUN chown -R 1001:1001 /etc/dex RUN chown -R 1001:1001 /etc/dex
# Copy module files for CVE scanning / dependency analysis. # Copy module files for CVE scanning / dependency analysis.
COPY --from=builder /usr/local/src/dex/go.mod /usr/local/src/dex/go.sum /usr/local/src/dex/ COPY --from=builder /usr/local/src/dex/go.mod /usr/local/src/dex/go.sum /usr/local/src/dex/
COPY --from=builder /usr/local/src/dex/api/v2/go.mod /usr/local/src/dex/api/v2/go.sum /usr/local/src/dex/api/v2/ COPY --from=builder /usr/local/src/dex/api/v2/go.mod /usr/local/src/dex/api/v2/go.sum /usr/local/src/dex/api/v2/
COPY --from=builder /usr/local/bin/gomplate /usr/local/bin/gomplate
COPY --from=builder /go/bin/dex /usr/local/bin/dex COPY --from=builder /go/bin/dex /usr/local/bin/dex
USER 1001:1001 USER 1001:1001
@ -57,7 +57,7 @@ COPY --from=builder /usr/local/src/dex/web /web
USER 1001:1001 USER 1001:1001
COPY entrypoint.sh / COPY docker-entrypoint.sh /
ENTRYPOINT ["/entrypoint.sh"] ENTRYPOINT ["/docker-entrypoint.sh"]
CMD ["serve", "/etc/dex/config.tmpl"] CMD ["serve", "/etc/dex/config.docker.yaml"]

View file

@ -3,25 +3,17 @@ issuer: {{ getenv "DEX_ISSUER" "http://127.0.0.1:5556/dex" }}
storage: storage:
type: sqlite3 type: sqlite3
config: config:
file: {{ getenv "DEX_STORAGE_SQLITE3_CONFIG_FILE" "/etc/dex/dex.db" }} file: {{ getenv "DEX_STORAGE_SQLITE3_CONFIG_FILE" "/var/dex/dex.db" }}
web: web:
{{- if getenv "DEX_WEB_HTTPS" "" }} {{- if getenv "DEX_WEB_HTTPS" "" }}
https: {{ .Env.DEX_WEB_HTTPS }} https: {{ .Env.DEX_WEB_HTTPS }}
{{- if getenv "DEX_WEB_TLS_KEY" }} tlsKey: {{ getenv "DEX_WEB_TLS_KEY" | required "$DEX_WEB_TLS_KEY in case of web.https is enabled" }}
tlsKey: {{ .Env.DEX_WEB_TLS_KEY }} tlsCert: {{ getenv "DEX_WEB_TLS_CERT" | required "$DEX_WEB_TLS_CERT in case of web.https is enabled" }}
{{- else }}
{{- fail "$DEX_WEB_TLS_KEY is required" }}
{{- end }}
{{- if getenv "DEX_WEB_TLS_CERT" "" }}
tlsCert: {{ .Env.DEX_WEB_TLS_CERT }}
{{- else }}
{{- fail "$DEX_WEB_TLS_CERT is required" }}
{{- end }}
{{- end }} {{- end }}
http: {{ getenv "DEX_WEB_HTTP" "0.0.0.0:5556" }} http: {{ getenv "DEX_WEB_HTTP" "0.0.0.0:5556" }}
{{- if getenv "DEX_TELEMETRY_HTTP" "" }} {{- if getenv "DEX_TELEMETRY_HTTP" }}
telemetry: telemetry:
http: {{ .Env.DEX_TELEMETRY_HTTP }} http: {{ .Env.DEX_TELEMETRY_HTTP }}
{{- end }} {{- end }}
@ -33,8 +25,8 @@ expiry:
authRequests: {{ getenv "DEX_EXPIRY_AUTH_REQUESTS" "24h" }} authRequests: {{ getenv "DEX_EXPIRY_AUTH_REQUESTS" "24h" }}
logger: logger:
level: {{ getenv "DEX_LOGGER_LEVEL" "info" }} level: {{ getenv "DEX_LOG_LEVEL" "info" }}
format: {{ getenv "DEX_LOGGER_FORMAT" "text" }} format: {{ getenv "DEX_LOG_FORMAT" "text" }}
oauth2: oauth2:
responseTypes: {{ getenv "DEX_OAUTH2_RESPONSE_TYPES" "[code]" }} responseTypes: {{ getenv "DEX_OAUTH2_RESPONSE_TYPES" "[code]" }}
@ -47,7 +39,7 @@ oauth2:
enablePasswordDB: {{ getenv "DEX_ENABLE_PASSWORD_DB" "true" }} enablePasswordDB: {{ getenv "DEX_ENABLE_PASSWORD_DB" "true" }}
connectors: connectors:
{{- if getenv "DEX_CONNECTORS_ENABLE_MOCK" "" }} {{- if getenv "DEX_CONNECTORS_ENABLE_MOCK" }}
- type: mockCallback - type: mockCallback
id: mock id: mock
name: Example name: Example

27
docker-entrypoint.sh Executable file
View file

@ -0,0 +1,27 @@
#!/bin/sh -e
### Usage: /docker-entrypoint.sh <command> <args>
command=$1
case "$command" in
serve)
for file_candidate in $@ ; do
if test -f "$file_candidate"; then
tmpfile=$(mktemp /tmp/dex.config.yaml-XXXXXX)
gomplate -f "$file_candidate" -o "$tmpfile"
echo "config rendered successfully into the tmp file ${tmpfile}"
args="${args} ${tmpfile}"
else
args="${args} ${file_candidate}"
fi
done
exec dex $args
;;
--help|-h|version)
exec dex $@
;;
*)
exec $@
;;
esac

View file

@ -1,13 +0,0 @@
#!/bin/sh -e
### Usage: /entrypoint.sh <command> <args>
set -e
command=$1
if [ "$command" == "serve" ]; then
file="$2"
gomplate -f "$file" -o "/etc/dex/config.yaml";
exec dex serve "/etc/dex/config.yaml"
else
exec dex $@
fi