63 lines
2.5 KiB
Markdown
63 lines
2.5 KiB
Markdown
# 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](https://luarocks.org)) `kong-http-to-https` and
|
|
`kong-upstream-jwt` to it. Also the custom template ([for rendering the
|
|
underlying nginx configuration file](https://docs.konghq.com/latest/configuration/#custom-nginx-templates--embedding-kong)
|
|
), 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_BASE` the base image to use, defaults to `kong:latest`.
|
|
- `PLUGINS` a 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_DIR` a 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 public `luarocks.org` server is used.
|
|
- `TEMPLATE` the custom configuration template to use
|
|
- `KONG_LICENSE_DATA` this 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.
|