|
|
||
|---|---|---|
| .. | ||
| Dockerfile | ||
| empty_file | ||
| example.sh | ||
| packer.lua | ||
| readme.md | ||
readme.md
Customize Kong by injecting plugins and templates
This dockerfile takes an existing Kong image and adds custom plugins and/or a custom template file to it.
docker build \
--build-arg KONG_BASE="kong:0.14.1-alpine" \
--build-arg PLUGINS="kong-http-to-https,kong-upstream-jwt" \
--build-arg TEMPLATE="/mykong/nginx.conf" \
--build-arg "KONG_LICENSE_DATA=$KONG_LICENSE_DATA" \
--tag "your_new_image" .
The above command will take the kong:0.14.1-alpine image and add the plugins
(as known on luarocks.org) kong-http-to-https and
kong-upstream-jwt to it. Also the custom template (for rendering the
underlying nginx configuration file
), located at /mykong/nginx.conf will be injected.
The resulting new image will be tagged as your_new_image.
When starting a container from the newly created image, the added plugins and
template will automatically be applied. So there is no need to specify the
environment variable KONG_PLUGINS nor the --nginx-conf command line
switch to enable them.
Curated list of plugins
This tool is based on the LuaRocks packagemanager to include all plugin
dependencies. The ROCKS_DIR variable allows you to only use a curated list of
rocks to be used (instead of the public ones).
It will generate a local LuaRocks server, and not allow any public ones to be
used. For an example of how to use it see the example.sh script.
Arguments:
KONG_BASEthe base image to use, defaults tokong:latest.PLUGINSa comma-separated list of the plugin names (NOT rock files!) that you wish to add to the image. All dependencies will also be installed.ROCKS_DIRa local directory where the allowed plugins/rocks are located. If specified, only rocks from this location will be allowed to be installed. If not specified, then the publicluarocks.orgserver is used.TEMPLATEthe custom configuration template to useKONG_LICENSE_DATAthis is required when the base image is an Enterprise version of Kong.
Note that the PLUGINS entries are simply LuaRocks commands used as:
luarocks install <entry>. So anything that LuaRocks accepts can be added
there, including commandline options. For example:
--build-arg PLUGINS="luassert --deps-mode=none"
Will add the luassert module, without resolving dependencies (this is useless,
but demonstrates how it works).
Limitations
- Only works for pure-Lua modules for now.