diff --git a/README.md b/README.md index 0c795ac..9dc73c7 100644 --- a/README.md +++ b/README.md @@ -11,13 +11,12 @@ This repository was originally forked from `@henridwyer`, many thanks to him for # Usage -Use this image with a `Dockerfile` such as: -```Dockerfile -FROM staticfloat/nginx-certbot -COPY *.conf /etc/nginx/conf.d/ +Create a config directory for your custom configs: +``` +mkdir conf.d ``` -And a `.conf` file such as: +And a `.conf` in that directory: ```nginx server { listen 443 ssl; @@ -43,6 +42,8 @@ services: - 443:443/tcp environment: - CERTBOT_EMAIL=owner@company.com + volumes: + - ./conf.d:/etc/nginx/user.conf.d :ro ... ``` diff --git a/example/Dockerfile b/example/Dockerfile deleted file mode 100644 index 21c5edd..0000000 --- a/example/Dockerfile +++ /dev/null @@ -1,2 +0,0 @@ -FROM staticfloat/nginx-certbot -COPY *.conf /etc/nginx/conf.d/ \ No newline at end of file diff --git a/example/nginx.conf b/example/conf.d/nginx.conf similarity index 100% rename from example/nginx.conf rename to example/conf.d/nginx.conf diff --git a/example/docker-compose.yml b/example/docker-compose.yml index 8e4bad8..3337320 100644 --- a/example/docker-compose.yml +++ b/example/docker-compose.yml @@ -2,10 +2,13 @@ version: '3' services: proxy: - build: . + image: staticfloat/nginx-certbot restart: always environment: CERTBOT_EMAIL: "your.email@example.com" ports: - "80:80" - "443:443" + volumes: + - ./conf.d:/etc/nginx/user.conf.d :ro + diff --git a/src/scripts/entrypoint.sh b/src/scripts/entrypoint.sh index c8cbf07..b2f5fc4 100644 --- a/src/scripts/entrypoint.sh +++ b/src/scripts/entrypoint.sh @@ -7,6 +7,9 @@ trap "kill 0" EXIT # Source in util.sh so we can have our nice tools . $(cd $(dirname $0); pwd)/util.sh +# first include any user configs if they've been mounted +link_user_configs + # Immediately run auto_enable_configs so that nginx is in a runnable state auto_enable_configs diff --git a/src/scripts/util.sh b/src/scripts/util.sh index 61a457f..8f0d5bb 100644 --- a/src/scripts/util.sh +++ b/src/scripts/util.sh @@ -92,3 +92,21 @@ is_renewal_required() { is_finshed_week_sec=$(( ($one_week_sec - $last_renewal_delta_sec) )) [ $is_finshed_week_sec -lt 0 ] } + +# symlinks any *.conf files in /etc/nginx/user.conf.d +# to /etc/nginx/conf.d so they are included as configs +# this allows a user to easily mount their own configs +link_user_configs() { + SOURCE_DIR="${1-/etc/nginx/user.conf.d}" + TARGET_DIR="${2-/etc/nginx/conf.d}" + + echo "symlinking scripts from ${SOURCE_DIR} to ${TARGET_DIR}" + + if [ ! -d "$SOURCE_DIR" ]; then + echo "no ${SOURCE_DIR}, nothing to do." + else + for conf in ${SOURCE_DIR}/*.conf; do + ln -sv "${conf}" "${TARGET_DIR}/$(basename ${conf})" + done + fi +}