...
Dockerfile
- Start Script
start_jobscheduler_agent.sh
- JobScheduler Agent tarball as is available from SOS for download.
Dockerfile
Download: Dockerfile
Code Block language bash title Dockerfile linenumbers true collapse true FROM openjdk:8 LABEL maintainer="Software- und Organisations-Service GmbH" # default user id has to match later run-time user ARG USER_ID=$UID # provide build arguments for release information ARG JS_MAJOR=1.13 ARG JS_RELEASE=1.13.3 # setup working directory RUN mkdir -p /var/sos-berlin.com WORKDIR /var/sos-berlin.com # add and extract tarball COPY ADD https://download.sos-berlin.com/JobScheduler.${JS_MAJOR}/jobscheduler_unix_universal_agent.${JS_RELEASE}.tar.gz /usr/local/src/ RUN test -e /usr/local/src/jobscheduler_unix_universal_agent.${JS_RELEASE}.tar.gz && \ tar xfvz /usr/local/src/jobscheduler_unix_universal_agent.${JS_RELEASE}.tar.gz && \ rm /usr/local/src/jobscheduler_unix_universal_agent.${JS_RELEASE}.tar.gz # add https keystore and private configuration file # COPY private-https.p12 /var/sos-berlin.com/jobscheduler_agent/var_4445/config/private/ # COPY private.conf /var/sos-berlin.com/jobscheduler_agent/var_4445/config/private/ # # create directories for file watching # RUN mkdir -p /var/sos-berlin.com/files/incoming && \ # mkdir -p /var/sos-berlin.com/files/success && \ # mkdir -p /var/sos-berlin.com/files/error # make default user the owner of directories RUN groupadd --gid ${USER_ID:-1000} jobscheduler && \ useradd --uid ${USER_ID:-1000} --gid jobscheduler --home-dir /home/jobscheduler --no-create-home --shell /bin/bash jobscheduler && \ chown -R jobscheduler:jobscheduler /var/sos-berlin.com # copy and prepare start script COPY start_jobscheduler_agent.sh /usr/local/bin/ RUN chmod +x /usr/local/bin/start_jobscheduler_agent.sh # prepareexpose logsvolume directory RUNfor mkdir -p /var/sos-berlin.com/jobscheduler_agent/var_4445/logs && chown -R jobscheduler:jobscheduler storage persistence VOLUME /var/sos-berlin.com/jobscheduler_agent/var_4445/logs # expose volume for storagefile persistencewatching # VOLUME /var/sos-berlin.com/jobscheduler_agent/var_4445files # allow incoming traffic to port EXPOSE 4445 # run-time user, can be overwritten when running the container USER jobscheduler CMD ["/usr/local/bin/start_jobscheduler_agent.sh"]
- Explanations
- Line 1: We start from an Alpine image that includes JDK 8. Newer Java version can be used, see Which Java versions is JobScheduler available for?
- Line 5: Consider that $UID provides the numeric ID of the account that the JobScheduler Agent installation inside the Docker container is performed for. This numeric ID typically starts above 1000 and should correspond to the account that is used on the Docker host, i.e. the account on the Docker Host and the account inside the container should use the same numeric ID. This mechanism simplifies exposure of the Docker container's file system.
- Line 8-9: Adjust the JobScheduler release number as required.
- Line 16-19: The Agent tarball is copied and extracted to the container.
- Line 22-24: An account and group "jobscheduler" is created that is handed over ownership of installed files.
- Line 27-28: The start script is copied to the container, see below chapter Start Script.
- Line 37: Port 4445 is exposed for later mapping. This port is used for the connection between JobScheduler Master and Agent.
- Line 40: The account "jobscheduler" that is the owner of the installation is exposed for later mapping. This account should be mapped at run-time to the account in the Docker Host that will mount the exposed volume.
- Line 42: The start script is executed to launch the JobScheduler Agent daemon.
...
Download: start_jobscheduler_agent.sh
Code Block language bash title Start Script linenumbers true #!/bin/sh JS_HOSTNAME="`hostname`" /var/sos-berlin.com/jobscheduler_agent/bin/jobscheduler_agent.sh start -http-port=4445 && tail -f /dev/null # start Agent for http port on localhost interface and for https port on network interface # /var/sos-berlin.com/jobscheduler_agent/bin/jobscheduler_agent.sh start -http-port=localhost:4445 -https-port=$JS_HOSTNAME:4445 && tail -f /dev/null
- Explanations
- Line 3: The standard start script
jobscheduler_agent.sh
is used. Thetail
command prevents the start script from terminating in order to keep the container alive.
- Line 3: The standard start script
...