diff --git a/modules/events-server-web/build.gradle.kts b/modules/events-server-web/build.gradle.kts index a9f506a..57a4d2b 100644 --- a/modules/events-server-web/build.gradle.kts +++ b/modules/events-server-web/build.gradle.kts @@ -90,3 +90,7 @@ val runEventsWebServer by tasks.registering { dependsOn(tasks.run) } + +tasks.dockerComposeBuild { + dependsOn(tasks.distTar) +} diff --git a/modules/events-server-web/docker/Dockerfile b/modules/events-server-web/docker/Dockerfile new file mode 100644 index 0000000..eebdaa0 --- /dev/null +++ b/modules/events-server-web/docker/Dockerfile @@ -0,0 +1,22 @@ +FROM openjdk:11 +ARG KAFKATORIO_VERSION +ARG DIST_DIR="../build/distributions/" +ARG APP_NAME="events-server-web" + +WORKDIR /app + +ENV WEB_SERVER_PORT=80 +EXPOSE $WEB_SERVER_PORT + +ENV SERVER_DATA_DIR="/app/data" +ENV KAFKA_STREAMS_STATE_DIR="/app/state/kafka" + +VOLUME ${SERVER_DATA_DIR} \ + ${KAFKA_STREAMS_STATE_DIR} + +COPY ${DIST_DIR}/${APP_NAME}-${KAFKATORIO_VERSION}.tar ${APP_NAME}.tar + +RUN tar -xf ${APP_NAME}.tar --strip-components=1 \ + && rm ${APP_NAME}.tar + +ENTRYPOINT /app/bin/${APP_NAME} diff --git a/modules/events-server-web/docker/docker-compose.yml b/modules/events-server-web/docker/docker-compose.yml new file mode 100644 index 0000000..c835897 --- /dev/null +++ b/modules/events-server-web/docker/docker-compose.yml @@ -0,0 +1,37 @@ +version: "3.9" + +services: + + events-server-web: + image: ${REGISTRY_HOST}/dev.adamko.kafkatorio/events-server-web:${KAFKATORIO_VERSION} + container_name: events-server-web + restart: unless-stopped + build: + context: .. + dockerfile: ./docker/Dockerfile + args: + KAFKATORIO_VERSION: ${KAFKATORIO_VERSION} + DIST_DIR: "./build/distributions/" + environment: + KAFKA_BOOTSTRAP_SERVERS: "http://kafka:29092" + # KAFKA_STREAMS_STATE_DIR: "" + WEB_SERVER_PORT: "80" + ports: + - "12080:80" # http and ws + networks: + - "kafka-nw" + - "kafkatorio-nw" + - "traefik-nw" + labels: + - "traefik.enable=true" + +networks: + kafka-nw: + name: "kafka-nw" + external: true + kafkatorio-nw: + name: "kafkatorio-nw" + external: true + traefik-nw: + name: "traefik-nw" + external: true