This project builds the docker images for the Knot.x
You need to have installed docker on your machine.
To build the docker images locally, just launch:
$> ./gradlew build
The built image contains the knotx
command in the system path.
The image is intended to be used by extension using the Docker FROM
directive.
We use the Knot.x Docker image in the Knot.x Starter Kit - the best way to start a new Knot.x project.
FROM knotx/knotx:2.0.0
# Set the JVM Options
ENV JAVA_OPTS "-Dfoo=bar"
# Set vertx options
ENV VERTX_OPTS "-Dvertx.options.eventLoopPoolSize=26 -Dvertx.options.deployment.worker=true"
ENV APPLICATION_HOME=/usr/local/custom-app
### Customize logging, if needed
COPY ./logback.xml ${KNOTX_HOME}/conf/logback.xml
## Customize Clustering if needed
COPY ./my-cluster.xml ${KNOTX_HOME}/conf/my-cluster.xml
ENV CLUSTER_CONFIG, ${KNOTX_HOME}/conf/my-cluster.xml
## In order to supply your custom configuration of Knot.x modules you'd need to supply
## your custom config folder consisting of bootstrap.json and corresponding .conf files
ADD ./config ${KNOTX_HOME}/my-config
ENV KNOTX_MAIN_CONFIG ${KNOTX_HOME}/my-config/bootstrap.json
## Add new dependencies to the Knot.x stack, a dependencies to your custom code
COPY knotx-stack.json ${KNOTX_HOME}/knotx-stack.json
RUN knotx resolve -conf ${KNOTX_MAIN_CONFIG} && rm -rf ${HOME}/.m2
###
# The rest of the file should be fine.
###
# We use the "sh -c" to turn around https://github.com/docker/docker/issues/5509 - variable not expanded
ENTRYPOINT ["sh", "-c"]
CMD ["knotx", "run-knotx", "-conf $KNOTX_MAIN_CONFIG"]
You should know be able to build your custom executable image:
docker build -t mycompany/my-knotx .
And run your instance:
docker run -i -t -p 8092:8092 mycompany/my-knotx
The resulting image is not made to be launched directly (as it contains only core knot.x and no default configurations). If you still want to launch it and see, whats in the image, just do:
docker run -i -t knotx/knotx
The knotx.x files are located in /usr/local/knotx/
.
You can access the knotx
command directly using:
docker run -p8092:8092 knotx/knotx
Or simply try to run a knotx in a container
docker run -p8092:8092 knotx/knotx knotx run-knotx