diff --git a/docs/docs.md b/docs/docs.md index f85b333d..62ce6de4 100644 --- a/docs/docs.md +++ b/docs/docs.md @@ -677,6 +677,10 @@ module.exports = { env: { DEFAULT_HOST: 'foo.bar.com' }, + // additional docker arguments (e.g.: additional ports) + dockerArgs: [ + '-p 8080:8080' + ], // env for the jrcs/letsencrypt-nginx-proxy-companion container envLetsEncrypt: { // Directory URI for the CA ACME API endpoint diff --git a/src/plugins/proxy/assets/templates/docker-args.sh b/src/plugins/proxy/assets/templates/docker-args.sh new file mode 100644 index 00000000..10b2cfce --- /dev/null +++ b/src/plugins/proxy/assets/templates/docker-args.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +<% if (typeof dockerArgs === "object") { %> \ + echo <% for (var args in dockerArgs) { %> <%- dockerArgs[args] %> <% } %> +<% } %> diff --git a/src/plugins/proxy/assets/templates/start.sh b/src/plugins/proxy/assets/templates/start.sh index f4cf8800..30dfd065 100644 --- a/src/plugins/proxy/assets/templates/start.sh +++ b/src/plugins/proxy/assets/templates/start.sh @@ -64,6 +64,7 @@ sudo docker run \ -v /opt/$APPNAME/config/html:/usr/share/nginx/html \ -v /opt/$APPNAME/config/nginx-default.conf:/etc/nginx/conf.d/my_proxy.conf:ro \ -v /var/run/docker.sock:/tmp/docker.sock:ro \ + $APP_PATH/config/docker-args.sh \ jwilder/nginx-proxy echo "Ran nginx-proxy as $APPNAME" diff --git a/src/plugins/proxy/command-handlers.js b/src/plugins/proxy/command-handlers.js index 4c54b55c..70a20ff5 100644 --- a/src/plugins/proxy/command-handlers.js +++ b/src/plugins/proxy/command-handlers.js @@ -201,6 +201,16 @@ export function reconfigShared(api) { dest: `/opt/${PROXY_CONTAINER_NAME}/config/nginx-default.conf` }); + const sharedDockerArgs = shared.dockerArgs || []; + + list.copy('Sending docker args', { + src: api.resolvePath(__dirname, 'assets/templates/docker-args.sh'), + dest: `/opt/${PROXY_CONTAINER_NAME}/config/docker-args.sh`, + vars: { + dockerArgs: sharedDockerArgs + } + }); + const sessions = getSessions(api); return api.runTaskList(list, sessions, { diff --git a/src/plugins/proxy/validate.js b/src/plugins/proxy/validate.js index 616d54ab..380cecf9 100644 --- a/src/plugins/proxy/validate.js +++ b/src/plugins/proxy/validate.js @@ -22,6 +22,7 @@ const schema = joi.object().keys({ httpPort: joi.number(), httpsPort: joi.number(), nginxConfig: joi.string(), + dockerArgs: joi.array().items(joi.string()), env: joi .object() .pattern(/[\s\S]*/, [joi.string(), joi.number(), joi.boolean()]),