forked from moqui/moqui-framework
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #4 from acetousk/dockerfile
Dockerfile
- Loading branch information
Showing
3 changed files
with
110 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
# syntax=docker/dockerfile:1 | ||
|
||
# Base build stage | ||
FROM gradle:7.4.1-jdk11 AS build | ||
WORKDIR /opt/moqui | ||
LABEL org.opencontainers.image.authors="[email protected]" | ||
|
||
# Arguments | ||
ARG GRADLE_COMMAND="" | ||
ARG GRADLE_ARGS="--info --no-daemon --parallel" | ||
ARG COMPONENT="" | ||
ARG COMPONENT_SET="" | ||
ARG RUN_LOCAL_SEARCH="true" | ||
# create user for search and chown corresponding files | ||
ARG search_name=opensearch | ||
|
||
# Copy source code | ||
COPY . ./ | ||
|
||
# Build and unzip application | ||
RUN sh start.sh && unzip -q -o moqui-plus-runtime.war | ||
|
||
# Copied from docker/simple/Dockerfile | ||
# Builds a minimal docker image with openjdk and moqui with various volumes for configuration and persisted data outside the container | ||
# NOTE: add components, build and if needed load data before building a docker image with this | ||
FROM eclipse-temurin:11-jre | ||
WORKDIR /opt/moqui | ||
ARG search_name=opensearch | ||
|
||
COPY --from=build /opt/moqui/WEB-INF WEB-INF | ||
COPY --from=build /opt/moqui/META-INF META-INF | ||
COPY --from=build /opt/moqui/*.class ./ | ||
COPY --from=build /opt/moqui/execlib execlib | ||
COPY --from=build /opt/moqui/runtime runtime | ||
|
||
RUN if [ "$RUN_LOCAL_SEARCH" == "true" ]; then \ | ||
if [ -d runtime/opensearch/bin ]; then \ | ||
echo "Installing OpenSearch User"; \ | ||
search_name=opensearch; \ | ||
groupadd -g 1000 opensearch 2>/dev/null || echo "group 1000 already exists" && \ | ||
useradd -u 1000 -g 1000 -G 0 -d /opt/moqui/runtime/opensearch opensearch 2>/dev/null || echo "user 1000 already exists" && \ | ||
chmod 0775 /opt/moqui/runtime/opensearch && \ | ||
chown -R 1000:0 /opt/moqui/runtime/opensearch; \ | ||
fi; \ | ||
if [ -d runtime/elasticsearch/bin ]; then \ | ||
echo "Installing ElasticSearch User"; \ | ||
search_name=elasticsearch; \ | ||
groupadd -r elasticsearch && \ | ||
useradd --no-log-init -r -g elasticsearch -d /opt/moqui/runtime/elasticsearch elasticsearch && \ | ||
chown -R elasticsearch:elasticsearch runtime/elasticsearch; \ | ||
fi; \ | ||
fi | ||
|
||
# exposed as volumes for configuration purposes | ||
VOLUME ["/opt/moqui/runtime/conf", "/opt/moqui/runtime/lib", "/opt/moqui/runtime/classes", "/opt/moqui/runtime/ecomponent"] | ||
# exposed as volumes to persist data outside the container, recommended | ||
VOLUME ["/opt/moqui/runtime/log", "/opt/moqui/runtime/txlog", "/opt/moqui/runtime/sessions", "/opt/moqui/runtime/db", "/opt/moqui/runtime/$search_name"] | ||
|
||
# Main Servlet Container Port, Search HTTP Port, Search Cluster (TCP Transport) Port, Hazelcast Cluster Port | ||
EXPOSE 80 9200 9300 5701 | ||
|
||
# this is to run from the war file directly, preferred approach unzips war file in advance | ||
# ENTRYPOINT ["java", "-jar", "moqui.war"] | ||
ENTRYPOINT ["java", "-cp", ".", "MoquiStart", "port=80"] | ||
|
||
HEALTHCHECK --interval=15s --timeout=600ms --start-period=15s CMD curl -f -H "X-Forwarded-Proto: https" -H "X-Forwarded-Ssl: on" http://localhost/status || exit 1 | ||
# specify this as a default parameter if none are specified with docker exec/run, ie run production by default | ||
CMD ["conf=conf/MoquiProductionConf.xml"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,7 +2,7 @@ | |
# NOTE: add components, build and if needed load data before building a docker image with this | ||
ARG RUNTIME_IMAGE=eclipse-temurin:11-jdk | ||
FROM ${RUNTIME_IMAGE} | ||
MAINTAINER Moqui Framework <[email protected]> | ||
LABEL org.opencontainers.image.authors="[email protected]" | ||
|
||
WORKDIR /opt/moqui | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
#! /bin/bash | ||
|
||
echo "Usage: start.sh [<moqui directory like . >]"; echo | ||
|
||
MOQUI_HOME="${1:-.}" | ||
|
||
GRADLE_COMMAND=${GRADLE_COMMAND:=""} | ||
GRADLE_ARGS=${GRADLE_ARGS:="--info --no-daemon --parallel"} | ||
|
||
COMPONENT=${COMPONENT:=""} | ||
COMPONENT_SET=${COMPONENT_SET:=""} | ||
|
||
RUN_LOCAL_SEARCH=${RUN_LOCAL_SEARCH:="true"} | ||
search_name=${search_name:="opensearch"} | ||
get_hazelcast () { if [ $USE_HAZELCAST = "true" ]; then echo "Getting moqui-hazelcast"; gradle $GRADLE_ARGS getComponent -Pcomponent=moqui-hazelcast; fi } | ||
get_component () { if [ -n "$COMPONENT" ]; then echo "Getting $COMPONENT"; gradle $GRADLE_ARGS getComponent -Pcomponent=$COMPONENT; fi } | ||
get_component_set () { if [ -n "$COMPONENT_SET" ]; then echo "Getting $COMPONENT_SET"; gradle $GRADLE_ARGS getComponentSet -PcomponentSet=$COMPONENT_SET; fi } | ||
|
||
if [ -f $MOQUI_HOME/moqui-plus-runtime.war ]; then echo "Using already built moqui-plus-runtime.war" | ||
else | ||
echo "cd into the $MOQUI_HOME directory"; START_PATH=$(pwd); cd $MOQUI_HOME | ||
|
||
if [ ! -d $MOQUI_HOME/runtime ]; then echo "Getting runtime"; gradle $GRADLE_ARGS getRuntime; fi | ||
if [ "$RUN_LOCAL_SEARCH" == "true" ]; then | ||
if [ "$search_name" != "elasticsearch" ]; then \ | ||
if [ ! -d $MOQUI_HOME/runtime/opensearch/bin ]; then echo "Installing OpenSearch"; gradle $GRADLE_ARGS downloadOpenSearch; fi | ||
elif [ -d runtime/elasticsearch/bin ]; then \ | ||
if [ ! -d $MOQUI_HOME/runtime/elasticsearch/bin ]; then echo "Installing ElasticSearch"; gradle $GRADLE_ARGS downloadElasticSearch; fi | ||
fi; | ||
fi | ||
|
||
if [ -n "$GRADLE_COMMAND" ]; then echo "Running gradle $GRADLE_ARGS $GRADLE_COMMAND"; gradle $GRADLE_ARGS "$GRADLE_COMMAND"; fi | ||
|
||
get_hazelcast | ||
get_component | ||
get_component_set | ||
|
||
echo "Getting Dependencies"; gradle $GRADLE_ARGS getDepends | ||
echo "Add runtime"; gradle $GRADLE_ARGS addRuntime | ||
echo "Done"; cd $START_PATH | ||
fi |