This is an automated email from the ASF dual-hosted git repository. yasith pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/airavata.git
commit 56a8c517a159f65cef2762d1a737982b7fe34be9 Author: Yasindu Dissanayake <[email protected]> AuthorDate: Tue Jun 10 14:56:52 2025 +0530 improve Dockerfiles and Docker-Compose Files --- .../src/main/docker/api-server/Dockerfile | 33 +++++++++++-- .../src/main/docker/controller/Dockerfile | 21 +++++++-- .../src/main/docker/docker-compose.yml | 55 +++++++++++++++++++--- .../src/main/docker/email-monitor/Dockerfile | 21 ++++++--- .../src/main/docker/participant/Dockerfile | 23 +++++++-- .../src/main/docker/post-wm/Dockerfile | 23 +++++++-- .../distribution/src/main/docker/pre-wm/Dockerfile | 23 +++++++-- 7 files changed, 161 insertions(+), 38 deletions(-) diff --git a/modules/distribution/src/main/docker/api-server/Dockerfile b/modules/distribution/src/main/docker/api-server/Dockerfile index cab26aae05..5ac62051a0 100644 --- a/modules/distribution/src/main/docker/api-server/Dockerfile +++ b/modules/distribution/src/main/docker/api-server/Dockerfile @@ -15,9 +15,32 @@ # specific language governing permissions and limitations # under the License. -from adoptopenjdk/openjdk11 +FROM eclipse-temurin:17-jre -ADD ${api.server.dist.name}-bin.tar.gz /opt -RUN mv /opt/${api.server.dist.name} /opt/apache-airavata-api-server -ADD wait-for-it.sh /tmp/wait-for-it.sh -RUN chmod +x /tmp/wait-for-it.sh \ No newline at end of file +# Set working directory +WORKDIR /opt + +# Copy the extracted distribution files +COPY ${api.server.dist.name}-bin.tar.gz /opt/ +RUN tar -xzf /opt/${api.server.dist.name}-bin.tar.gz && \ + rm /opt/${api.server.dist.name}-bin.tar.gz && \ + mv /opt/${api.server.dist.name} /opt/apache-airavata + +# Copy wait-for-it script for container orchestration +COPY wait-for-it.sh /opt/apache-airavata/wait-for-it.sh +RUN chmod +x /opt/apache-airavata/wait-for-it.sh + +# Add required configuration +RUN echo "api.server.monitoring.enabled=false" >> /opt/apache-airavata/bin/airavata-server.properties + +# Set environment variables +ENV JAVA_HOME=/opt/java/openjdk +ENV PATH="${JAVA_HOME}/bin:${PATH}" +ENV AIRAVATA_HOME=/opt/apache-airavata + +# Expose the default API server port +EXPOSE 8960 9930 7878 8962 8970 + +# Set the entrypoint to use the shell script +ENTRYPOINT ["/opt/apache-airavata/bin/airavata-server-start.sh"] +CMD ["api-orch"] diff --git a/modules/distribution/src/main/docker/controller/Dockerfile b/modules/distribution/src/main/docker/controller/Dockerfile index 9eaa0787c6..84f306d33a 100644 --- a/modules/distribution/src/main/docker/controller/Dockerfile +++ b/modules/distribution/src/main/docker/controller/Dockerfile @@ -15,9 +15,20 @@ # specific language governing permissions and limitations # under the License. -from adoptopenjdk/openjdk11 +FROM eclipse-temurin:17-jre -ADD ${controller.dist.name}-bin.tar.gz /opt -RUN mv /opt/${controller.dist.name} /opt/apache-airavata-controller -ADD wait-for-it.sh /tmp/wait-for-it.sh -RUN chmod +x /tmp/wait-for-it.sh \ No newline at end of file +WORKDIR /opt + +COPY ${controller.dist.name}-bin.tar.gz . +RUN tar -xzf ${controller.dist.name}-bin.tar.gz && \ + mv ${controller.dist.name} apache-airavata-controller && \ + rm ${controller.dist.name}-bin.tar.gz + + +COPY wait-for-it.sh /tmp/wait-for-it.sh +RUN chmod +x /tmp/wait-for-it.sh + +ENV JAVA_HOME=/opt/java/openjdk +ENV AIRAVATA_HOME=/opt/apache-airavata-controller + +ENTRYPOINT ["/opt/apache-airavata-controller/bin/controller.sh"] \ No newline at end of file diff --git a/modules/distribution/src/main/docker/docker-compose.yml b/modules/distribution/src/main/docker/docker-compose.yml index ed6cc60a72..a6d6782ae7 100644 --- a/modules/distribution/src/main/docker/docker-compose.yml +++ b/modules/distribution/src/main/docker/docker-compose.yml @@ -28,7 +28,6 @@ services: - keycloak environment: - zookeeper.server.connection=zookeeper:2181 - command: ["/tmp/wait-for-it.sh", "zookeeper:2181", "--" , "/opt/apache-airavata-controller/bin/controller.sh"] apiserver: image: airavata/api-server @@ -178,7 +177,6 @@ services: - iam.server.super.admin.password=admin - db_event_manager=org.apache.airavata.db.event.manager.DBEventManagerRunner - thrift.client.pool.abandoned.removal.enabled=true - command: ["/tmp/wait-for-it.sh", "db:3306", "--", "/tmp/wait-for-it.sh", "rabbitmq:5672", "--" , "/opt/apache-airavata-api-server/bin/airavata-server-start.sh", "api-orch"] prewm: image: airavata/pre-wm @@ -195,7 +193,6 @@ services: - regserver.server.host=apiserver - rabbitmq.broker.url=amqp://guest:guest@rabbitmq:5672/develop - pre.workflow.manager.loadbalance.clusters=false - command: ["/tmp/wait-for-it.sh", "zookeeper:2181", "--", "/tmp/wait-for-it.sh", "apiserver:8970", "--" , "/tmp/wait-for-it.sh", "rabbitmq:5672", "--", "/opt/apache-airavata-pre-wm/bin/pre-wm.sh"] participant: image: airavata/participant @@ -216,7 +213,6 @@ services: - enable.realtime.monitor=false - profile.service.server.host=apiserver - profile.service.server.port=8962 - command: ["/tmp/wait-for-it.sh", "zookeeper:2181", "--", "/tmp/wait-for-it.sh", "apiserver:8970", "--" , "/tmp/wait-for-it.sh", "rabbitmq:5672", "--", "/opt/apache-airavata-participant/bin/participant.sh"] emailmonitor: image: airavata/email-monitor @@ -228,8 +224,6 @@ services: - keycloak - apiserver - rabbitmq - volumes: - - ../resources/email-config.yaml:/opt/apache-airavata-email-monitor/conf/email-config.yaml environment: - zookeeper.server.connection=zookeeper:2181 - regserver.server.host=apiserver @@ -237,7 +231,51 @@ services: - email.based.monitor.address=CHANGEME - email.based.monitor.password=CHANGEME - job.monitor.broker.url=kafka:9092 - command: ["/tmp/wait-for-it.sh", "zookeeper:2181", "--", "/tmp/wait-for-it.sh", "apiserver:8970", "--" , "/tmp/wait-for-it.sh", "kafka:9092", "--", "/opt/apache-airavata-email-monitor/bin/email-monitor.sh"] + + db: + image: mariadb:10.4.13 + environment: + MYSQL_ROOT_PASSWORD: 123456 + ports: + - "3306:3306" + volumes: + - mariadb_data:/var/lib/mysql + + keycloak: + image: keycloak/keycloak:24.0 + environment: + KEYCLOAK_ADMIN: admin + KEYCLOAK_ADMIN_PASSWORD: admin + command: ["start-dev", "--https-port=8443"] + ports: + - "8443:8443" + - "18080:8080" + + rabbitmq: + image: rabbitmq:3.12.14-management + ports: + - "5672:5672" + - "15672:15672" + environment: + - RABBITMQ_DEFAULT_USER=guest + - RABBITMQ_DEFAULT_PASS=guest + command: > + bash -c " + rabbitmq-server & + until rabbitmqctl status > /dev/null 2>&1; do + echo 'Waiting for RabbitMQ to be ready...' + sleep 2 + done + rabbitmqctl add_vhost develop + rabbitmqctl set_permissions -p develop guest '.*' '.*' '.*' + wait + " + + zookeeper: + image: wurstmeister/zookeeper + hostname: zookeeper + ports: + - "2181:2181" kafka: image: wurstmeister/kafka @@ -265,3 +303,6 @@ services: - post.workflow.manager.loadbalance.clusters=false - kafka.broker.url=kafka:9092 command: ["/tmp/wait-for-it.sh", "zookeeper:2181", "--", "/tmp/wait-for-it.sh", "apiserver:8970", "--" , "/tmp/wait-for-it.sh", "rabbitmq:5672", "--", "/tmp/wait-for-it.sh", "kafka:9092", "--", "/opt/apache-airavata-post-wm/bin/post-wm.sh"] + +volumes: + mariadb_data: diff --git a/modules/distribution/src/main/docker/email-monitor/Dockerfile b/modules/distribution/src/main/docker/email-monitor/Dockerfile index 467c2623a2..61f069827e 100644 --- a/modules/distribution/src/main/docker/email-monitor/Dockerfile +++ b/modules/distribution/src/main/docker/email-monitor/Dockerfile @@ -15,10 +15,19 @@ # specific language governing permissions and limitations # under the License. -from adoptopenjdk/openjdk11 +FROM eclipse-temurin:17-jre -ADD ${email.monitor.dist.name}-bin.tar.gz /opt -RUN mv /opt/${email.monitor.dist.name} /opt/apache-airavata-email-monitor -RUN rm /opt/apache-airavata-email-monitor/conf/email-config.yaml -ADD wait-for-it.sh /tmp/wait-for-it.sh -RUN chmod +x /tmp/wait-for-it.sh \ No newline at end of file +WORKDIR /opt + +COPY ${email.monitor.dist.name}-bin.tar.gz . +RUN tar -xzf ${email.monitor.dist.name}-bin.tar.gz && \ + mv ${email.monitor.dist.name} apache-airavata-email-monitor && \ + rm ${email.monitor.dist.name}-bin.tar.gz + +COPY wait-for-it.sh /tmp/ +RUN chmod +x /tmp/wait-for-it.sh + +ENV JAVA_HOME=/opt/java/openjdk +ENV AIRAVATA_HOME=/opt/apache-airavata-email-monitor + +ENTRYPOINT ["/opt/apache-airavata-email-monitor/bin/email-monitor.sh"] \ No newline at end of file diff --git a/modules/distribution/src/main/docker/participant/Dockerfile b/modules/distribution/src/main/docker/participant/Dockerfile index f9bd1f0a48..4f7bf5866c 100644 --- a/modules/distribution/src/main/docker/participant/Dockerfile +++ b/modules/distribution/src/main/docker/participant/Dockerfile @@ -15,9 +15,22 @@ # specific language governing permissions and limitations # under the License. -from adoptopenjdk/openjdk11 +FROM eclipse-temurin:17-jre -ADD ${participant.dist.name}-bin.tar.gz /opt -RUN mv /opt/${participant.dist.name} /opt/apache-airavata-participant -ADD wait-for-it.sh /tmp/wait-for-it.sh -RUN chmod +x /tmp/wait-for-it.sh \ No newline at end of file +WORKDIR /opt + +COPY ${participant.dist.name}-bin.tar.gz . +RUN tar -xzf ${participant.dist.name}-bin.tar.gz && \ + mv ${participant.dist.name} apache-airavata-participant && \ + rm ${participant.dist.name}-bin.tar.gz + +COPY wait-for-it.sh /tmp/ +RUN chmod +x /tmp/wait-for-it.sh + +ENV JAVA_HOME=/opt/java/openjdk +ENV AIRAVATA_HOME=/opt/apache-airavata-participant + +# Expose monitoring port +EXPOSE 8080 + +ENTRYPOINT ["/opt/apache-airavata-participant/bin/participant.sh"] \ No newline at end of file diff --git a/modules/distribution/src/main/docker/post-wm/Dockerfile b/modules/distribution/src/main/docker/post-wm/Dockerfile index 15a34993ee..f6cff58730 100644 --- a/modules/distribution/src/main/docker/post-wm/Dockerfile +++ b/modules/distribution/src/main/docker/post-wm/Dockerfile @@ -15,9 +15,22 @@ # specific language governing permissions and limitations # under the License. -from adoptopenjdk/openjdk11 +FROM eclipse-temurin:17-jre -ADD ${post.wm.dist.name}-bin.tar.gz /opt -RUN mv /opt/${post.wm.dist.name} /opt/apache-airavata-post-wm -ADD wait-for-it.sh /tmp/wait-for-it.sh -RUN chmod +x /tmp/wait-for-it.sh \ No newline at end of file +WORKDIR /opt + +COPY ${post.wm.dist.name}-bin.tar.gz . +RUN tar -xzf ${post.wm.dist.name}-bin.tar.gz && \ + mv ${post.wm.dist.name} apache-airavata-post-wm && \ + rm ${post.wm.dist.name}-bin.tar.gz + +COPY wait-for-it.sh /tmp/ +RUN chmod +x /tmp/wait-for-it.sh + +ENV JAVA_HOME=/opt/java/openjdk +ENV AIRAVATA_HOME=/opt/apache-airavata-post-wm + +# Expose monitoring port +EXPOSE 9094 + +ENTRYPOINT ["/opt/apache-airavata-post-wm/bin/post-wm.sh"] \ No newline at end of file diff --git a/modules/distribution/src/main/docker/pre-wm/Dockerfile b/modules/distribution/src/main/docker/pre-wm/Dockerfile index b7b07019ff..44f20d140b 100644 --- a/modules/distribution/src/main/docker/pre-wm/Dockerfile +++ b/modules/distribution/src/main/docker/pre-wm/Dockerfile @@ -15,9 +15,22 @@ # specific language governing permissions and limitations # under the License. -from adoptopenjdk/openjdk11 +FROM eclipse-temurin:17-jre -ADD ${pre.wm.dist.name}-bin.tar.gz /opt -RUN mv /opt/${pre.wm.dist.name} /opt/apache-airavata-pre-wm -ADD wait-for-it.sh /tmp/wait-for-it.sh -RUN chmod +x /tmp/wait-for-it.sh \ No newline at end of file +WORKDIR /opt + +COPY ${pre.wm.dist.name}-bin.tar.gz . +RUN tar -xzf ${pre.wm.dist.name}-bin.tar.gz && \ + mv ${pre.wm.dist.name} apache-airavata-pre-wm && \ + rm ${pre.wm.dist.name}-bin.tar.gz + +COPY wait-for-it.sh /tmp/ +RUN chmod +x /tmp/wait-for-it.sh + +ENV JAVA_HOME=/opt/java/openjdk +ENV AIRAVATA_HOME=/opt/apache-airavata-pre-wm + +# Expose monitoring port +EXPOSE 9093 + +ENTRYPOINT ["/opt/apache-airavata-pre-wm/bin/pre-wm.sh"] \ No newline at end of file
