diff --git a/modules/events-processors/build.gradle.kts b/modules/events-processors/build.gradle.kts index 37ea412..05835ab 100644 --- a/modules/events-processors/build.gradle.kts +++ b/modules/events-processors/build.gradle.kts @@ -1,3 +1,4 @@ +import kafkatorio.extensions.dropDirectory import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { @@ -90,6 +91,15 @@ val runEventsProcessors by tasks.registering { dependsOn(tasks.run) } -tasks.dockerComposeBuild { - dependsOn(tasks.distTar) + +tasks.dockerContextPrepareFiles { + from(zipTree(tasks.distZip.flatMap { it.archiveFile })) { + eachFile { + relativePath = relativePath.dropDirectory() + + if (!isDirectory && relativePath.pathString.matches("""bin\/.+""".toRegex())) { + name = name.replace(file.nameWithoutExtension, "run") + } + } + } } diff --git a/modules/events-processors/docker/Dockerfile b/modules/events-processors/docker/Dockerfile index b70ab64..9868b60 100644 --- a/modules/events-processors/docker/Dockerfile +++ b/modules/events-processors/docker/Dockerfile @@ -2,21 +2,18 @@ FROM eclipse-temurin:11-jdk-jammy ARG KAFKATORIO_VERSION -ARG DIST_DIR="../build/distributions/" -ARG APP_NAME="events-processors" +ARG APP_FILES="build/" +ARG USER_ID=1000 +ARG USER_GID=1000 -WORKDIR /app +USER $USER_ID:$USER_GID + +ENV SERVER_DATA_DIR="/app/data" \ + KAFKA_STREAMS_STATE_DIR="/app/state/kafka" -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 \ - && cp /app/bin/${APP_NAME} /app/bin/run \ - && chmod 775 /app/bin/run +COPY ${APP_FILES} /app/ ENTRYPOINT /app/bin/run diff --git a/modules/events-processors/docker/docker-compose.yml b/modules/events-processors/docker/docker-compose.yml index 9091b44..fc976f6 100644 --- a/modules/events-processors/docker/docker-compose.yml +++ b/modules/events-processors/docker/docker-compose.yml @@ -7,12 +7,11 @@ services: container_name: ${APP_NAME} restart: unless-stopped build: - context: .. - dockerfile: ./docker/Dockerfile + context: . + dockerfile: Dockerfile args: KAFKATORIO_VERSION: ${KAFKATORIO_VERSION} - DIST_DIR: "./build/distributions/" - APP_NAME: ${APP_NAME} + APP_FILES: "./build/" environment: KAFKA_BOOTSTRAP_SERVERS: "http://kafka:29092" # KAFKA_STREAMS_STATE_DIR: "" diff --git a/modules/events-server-syslog/build.gradle.kts b/modules/events-server-syslog/build.gradle.kts index ca3a7ed..3e9dbf2 100644 --- a/modules/events-server-syslog/build.gradle.kts +++ b/modules/events-server-syslog/build.gradle.kts @@ -1,3 +1,4 @@ +import kafkatorio.extensions.dropDirectory import org.jetbrains.kotlin.gradle.tasks.KotlinCompile @@ -88,6 +89,14 @@ val runSyslogServer by tasks.registering { dependsOn(tasks.run) } -tasks.dockerComposeBuild { - dependsOn(tasks.distTar) +tasks.dockerContextPrepareFiles { + from(zipTree(tasks.distZip.flatMap { it.archiveFile })) { + eachFile { + relativePath = relativePath.dropDirectory() + + if (!isDirectory && relativePath.pathString.matches("""bin\/.+""".toRegex())) { + name = name.replace(file.nameWithoutExtension, "run") + } + } + } } diff --git a/modules/events-server-syslog/docker/Dockerfile b/modules/events-server-syslog/docker/Dockerfile index 0b76d0b..19c0a1a 100644 --- a/modules/events-server-syslog/docker/Dockerfile +++ b/modules/events-server-syslog/docker/Dockerfile @@ -2,26 +2,22 @@ FROM eclipse-temurin:11-jdk-jammy ARG KAFKATORIO_VERSION -ARG DIST_DIR="../build/distributions/" -ARG APP_NAME="events-server-syslog" +ARG APP_FILES="build/" +ARG USER_ID=1000 +ARG USER_GID=1000 -WORKDIR /app +USER $USER_ID:$USER_GID + +ENV SERVER_DATA_DIR="/app/data" \ + KAFKA_STREAMS_STATE_DIR="/app/state/kafka" \ + SOCKET_SERVER_HOST=0.0.0.0 \ + SOCKET_SERVER_PORT=9002 -ENV SOCKET_SERVER_HOST=0.0.0.0 -ENV SOCKET_SERVER_PORT=9002 EXPOSE $SOCKET_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 \ - && cp /app/bin/${APP_NAME} /app/bin/run \ - && chmod 775 /app/bin/run +COPY ${APP_FILES} /app/ ENTRYPOINT /app/bin/run diff --git a/modules/events-server-syslog/docker/docker-compose.yml b/modules/events-server-syslog/docker/docker-compose.yml index 855f34b..1fc4743 100644 --- a/modules/events-server-syslog/docker/docker-compose.yml +++ b/modules/events-server-syslog/docker/docker-compose.yml @@ -7,12 +7,11 @@ services: container_name: ${APP_NAME} restart: unless-stopped build: - context: .. - dockerfile: ./docker/Dockerfile + context: . + dockerfile: Dockerfile args: KAFKATORIO_VERSION: ${KAFKATORIO_VERSION} - DIST_DIR: "./build/distributions/" - APP_NAME: ${APP_NAME} + APP_FILES: "./build/" environment: KAFKA_BOOTSTRAP_SERVERS: "http://kafka:29092" # KAFKA_STREAMS_STATE_DIR: "" diff --git a/modules/events-server-web/build.gradle.kts b/modules/events-server-web/build.gradle.kts index 57a4d2b..7b1b8c2 100644 --- a/modules/events-server-web/build.gradle.kts +++ b/modules/events-server-web/build.gradle.kts @@ -1,3 +1,4 @@ +import kafkatorio.extensions.dropDirectory import org.jetbrains.kotlin.gradle.tasks.KotlinCompile @@ -91,6 +92,14 @@ val runEventsWebServer by tasks.registering { dependsOn(tasks.run) } -tasks.dockerComposeBuild { - dependsOn(tasks.distTar) +tasks.dockerContextPrepareFiles { + from(zipTree(tasks.distZip.flatMap { it.archiveFile })) { + eachFile { + relativePath = relativePath.dropDirectory() + + if (!isDirectory && relativePath.pathString.matches("""bin\/.+""".toRegex())) { + name = name.replace(file.nameWithoutExtension, "run") + } + } + } } diff --git a/modules/events-server-web/docker/Dockerfile b/modules/events-server-web/docker/Dockerfile index 32c34e9..e767a17 100644 --- a/modules/events-server-web/docker/Dockerfile +++ b/modules/events-server-web/docker/Dockerfile @@ -1,26 +1,22 @@ # syntax=docker/dockerfile:1 -FROM openjdk:11 +FROM eclipse-temurin:11-jdk-jammy ARG KAFKATORIO_VERSION -ARG DIST_DIR="../build/distributions/" -ARG APP_NAME="events-server-web" +ARG APP_FILES="build/" +ARG USER_ID=1000 +ARG USER_GID=1000 -WORKDIR /app +USER $USER_ID:$USER_GID + +ENV SERVER_DATA_DIR="/app/data" \ + KAFKA_STREAMS_STATE_DIR="/app/state/kafka" \ + WEB_SERVER_PORT=80 -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 \ - && cp /app/bin/${APP_NAME} /app/bin/run \ - && chmod 775 /app/bin/run +COPY ${APP_FILES} /app/ ENTRYPOINT /app/bin/run diff --git a/modules/events-server-web/docker/docker-compose.yml b/modules/events-server-web/docker/docker-compose.yml index e8ec9a7..59abd6c 100644 --- a/modules/events-server-web/docker/docker-compose.yml +++ b/modules/events-server-web/docker/docker-compose.yml @@ -7,12 +7,11 @@ services: container_name: ${APP_NAME} restart: unless-stopped build: - context: .. - dockerfile: ./docker/Dockerfile + context: . + dockerfile: Dockerfile args: KAFKATORIO_VERSION: ${KAFKATORIO_VERSION} - DIST_DIR: "./build/distributions/" - APP_NAME: ${APP_NAME} + APP_FILES: "./build/" environment: KAFKA_BOOTSTRAP_SERVERS: "http://kafka:29092" # KAFKA_STREAMS_STATE_DIR: "" diff --git a/modules/events-server/docker/Dockerfile b/modules/events-server/docker/Dockerfile index 8c87699..c8e9492 100644 --- a/modules/events-server/docker/Dockerfile +++ b/modules/events-server/docker/Dockerfile @@ -2,24 +2,23 @@ FROM eclipse-temurin:11-jdk-jammy ARG KAFKATORIO_VERSION -ARG DIST_DIR="../build/distributions/" +ARG APP_FILES="build/" +ARG USER_ID=1000 +ARG USER_GID=1000 -WORKDIR /app +USER $USER_ID:$USER_GID -ENV SERVER_PORT=8080 -EXPOSE $SERVER_PORT +ENV SERVER_DATA_DIR="/app/data" \ + KAFKA_STREAMS_STATE_DIR="/app/state/kafka" \ + SERVER_PORT=8080 \ + SOCKET_SERVER_PORT=9002 -ENV SOCKET_SERVER_PORT=9002 -EXPOSE $SOCKET_SERVER_PORT +EXPOSE $SERVER_PORT \ + $SOCKET_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}/events-server-${KAFKATORIO_VERSION}.tar events-server.tar +COPY ${APP_FILES} /app/ -RUN tar -xf events-server.tar --strip-components=1 \ - && rm events-server.tar - -ENTRYPOINT /app/bin/events-server +ENTRYPOINT /app/bin/run diff --git a/modules/events-server/docker/docker-compose.yml b/modules/events-server/docker/docker-compose.yml index 47d753a..b4400f0 100644 --- a/modules/events-server/docker/docker-compose.yml +++ b/modules/events-server/docker/docker-compose.yml @@ -7,12 +7,11 @@ services: container_name: ${APP_NAME} restart: unless-stopped build: - context: .. - dockerfile: ./docker/Dockerfile + context: . + dockerfile: Dockerfile args: KAFKATORIO_VERSION: ${KAFKATORIO_VERSION} - DIST_DIR: "./build/distributions/" - APP_NAME: ${APP_NAME} + APP_FILES: "./build/" environment: KAFKA_BOOTSTRAP_SERVERS: "http://kafka:29092" # KAFKA_STREAMS_STATE_DIR: "" diff --git a/modules/infra-kafka-pipe/build.gradle.kts b/modules/infra-kafka-pipe/build.gradle.kts index e7ecb5b..e0380dd 100644 --- a/modules/infra-kafka-pipe/build.gradle.kts +++ b/modules/infra-kafka-pipe/build.gradle.kts @@ -1,5 +1,3 @@ -import dev.adamko.geedeecee.DockerComposeExec - plugins { id("kafkatorio.conventions.base") id("dev.adamko.geedeecee") @@ -17,39 +15,3 @@ geedeecee { tasks.dockerComposeUp { dependsOn(":modules:infra-kafka-cluster:dockerUp") } - - -val dockerBuildKafkaPipe by tasks.registering(DockerComposeExec::class) { - - dockerComposeDir.set(geedeecee.srcDir) - command.set("docker-compose build kafka-pipe") - - -// inputs.property("dockerSrcDirChecksum") { dockerSrcDir.filesChecksum() } -// -// outputs.upToDateWhen { -// it.inputs.properties["dockerSrcDirChecksum"] as? Long? == dockerSrcDir.filesChecksum() -// } - -// val imageIdFile = file("$temporaryDir/docker-image-id.txt") -// outputs.file(imageIdFile) - -// workingDir = dockerSrcDir.asFile -// commandLine = parseSpaceSeparatedArgs(""" docker-compose build kafka-pipe """) - -// doLast { -// sync { -// from(dockerSrcDir) -// into(temporaryDir) -// } -// imageIdFile.outputStream().use { os -> -// exec { -// workingDir = dockerSrcDir.asFile -// commandLine = parseSpaceSeparatedArgs(""" docker-compose images -q kafka-pipe """) -// standardOutput = os -// } -// } -//} -} - -tasks.assemble { dependsOn(dockerBuildKafkaPipe) } diff --git a/modules/web-map/build.gradle.kts b/modules/web-map/build.gradle.kts index 60ade07..54e26f7 100644 --- a/modules/web-map/build.gradle.kts +++ b/modules/web-map/build.gradle.kts @@ -148,6 +148,6 @@ tasks.zip { } -tasks.dockerComposeBuild { - dependsOn(tasks.zip) +tasks.dockerContextPrepareFiles { + from(zipTree(tasks.zip.flatMap { it.archiveFile })) } diff --git a/modules/web-map/docker/Dockerfile b/modules/web-map/docker/Dockerfile index 1764c56..3cae269 100644 --- a/modules/web-map/docker/Dockerfile +++ b/modules/web-map/docker/Dockerfile @@ -1,9 +1,10 @@ # syntax=docker/dockerfile:1 FROM nginx +ARG APP_FILES="build/" EXPOSE 80 -COPY ./docker/nginx.conf /etc/nginx/nginx.conf +COPY ./nginx.conf /etc/nginx/nginx.conf -COPY ./build/distributions /usr/share/nginx/html +COPY $APP_FILES /usr/share/nginx/html diff --git a/modules/web-map/docker/docker-compose.yml b/modules/web-map/docker/docker-compose.yml index 6e5cf80..1170228 100644 --- a/modules/web-map/docker/docker-compose.yml +++ b/modules/web-map/docker/docker-compose.yml @@ -7,10 +7,11 @@ services: container_name: ${APP_NAME} restart: unless-stopped build: - context: ".." - dockerfile: ./docker/Dockerfile + context: . + dockerfile: Dockerfile args: - APP_NAME: ${APP_NAME} + KAFKATORIO_VERSION: ${KAFKATORIO_VERSION} + APP_FILES: "./build/" ports: - "12081:80" networks: