Skip to content

Instantly share code, notes, and snippets.

@typomaker
Created February 16, 2021 19:54
Show Gist options
  • Save typomaker/a690581e20d782230e8890ade3d82d5d to your computer and use it in GitHub Desktop.
Save typomaker/a690581e20d782230e8890ade3d82d5d to your computer and use it in GitHub Desktop.
Nginx docker-entrypoint.sh with generating self signed certs for dev-mode and .conf with using environment variables
#!/usr/bin/env bash
set -eo pipefail
echo "DOMAIN=${DOMAIN}";
if [[ "$ENV" == "development" ]]; then
if [[ ! -d /ssl/certs ]]; then
echo "Creating /ssl/certs"
mkdir -p /ssl/certs
fi
if [[ ! -f /ssl/certs/server.key ]]; then
# KEY_OPT="-key"
#else
KEY_OPT="-keyout"
openssl req \
-x509 \
-newkey rsa:4096 \
-sha256 \
-days 3650 \
-nodes \
${KEY_OPT} /ssl/certs/server.key \
-out /ssl/certs/server.crt \
-extensions san \
-config <(echo '[req]'; \
echo 'distinguished_name=req'; \
echo '[san]'; \
echo "subjectAltName=DNS:${DOMAIN},DNS:server.${DOMAIN},DNS:io.${DOMAIN}" \
) \
-subj "/CN=${DOMAIN}"
fi
fi
for f in $(find /conf.d/ -regex '.*\.conf'); do
envsubst '${DOMAIN}' < ${f} > "/etc/nginx/conf.d/$(basename $f)";
# cat /etc/nginx/conf.d/$(basename $f);
# echo
done
exec "$@"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment