diff options
Diffstat (limited to 'Services/nodejs')
| -rw-r--r-- | Services/nodejs/Dockerfile | 8 | ||||
| -rw-r--r-- | Services/nodejs/README.md | 16 | ||||
| -rw-r--r-- | Services/nodejs/docker-compose.yml | 4 | ||||
| -rw-r--r-- | Services/nodejs/run.sh | 28 | 
4 files changed, 31 insertions, 25 deletions
| diff --git a/Services/nodejs/Dockerfile b/Services/nodejs/Dockerfile index 43969a1..74fec14 100644 --- a/Services/nodejs/Dockerfile +++ b/Services/nodejs/Dockerfile @@ -4,11 +4,11 @@ MAINTAINER Christophe LARUE <dev@startx.fr>  USER root  RUN dnf -y install nodejs npm python make gcc && \      dnf clean all  -ENV STARTUPLOG=/data/logs/nodejs/startup.log \ -    LOG_PATH=/data/logs/nodejs  \ -    APP_PATH=/data/nodejs \ +ENV STARTUPLOG=/logs/startup.log \ +    LOG_PATH=/logs  \ +    APP_PATH=/data \      TMP_APP_PATH=/tmp/nodejs \ -    APP_MAIN=/data/nodejs/app.js +    APP_MAIN=/data/app.js  COPY *.sh /bin/  RUN chmod 775 /bin/run.sh && \      mkdir -p $APP_PATH && \ diff --git a/Services/nodejs/README.md b/Services/nodejs/README.md index 0aae3e5..806f2d5 100644 --- a/Services/nodejs/README.md +++ b/Services/nodejs/README.md @@ -30,8 +30,8 @@ service:      CONTAINER_SERVICE: "nodejs"      CONTAINER_INSTANCE: "service-nodejs"    volumes: -    - "/tmp/container/logs/nodejs:/data/logs/nodejs" -    - "/tmp/container/nodejs:/data/nodejs" +    - "/tmp/container/logs/nodejs:/logs" +    - "/tmp/container/nodejs:/data"  ```  ## Docker-compose in various situations @@ -89,8 +89,8 @@ CMD ["/bin/run.sh"]  | CONTAINER_INSTANCE        | `string` | `yes`     | Container name. Should be uning to get fine grained log and application reporting  | CONTAINER_TYPE            | `string` | `no`      | Container family (os, service, application. could be enhanced   | CONTAINER_SERVICE         | `string` | `no`      | Define the type of service or application provided -| LOG_PATH                  | `auto`   | `auto`    | default set to /data/logs/nodejs and used as a volume mountpoint -| APP_PATH                  | `auto`   | `auto`    | default set to /data/nodejs and used as a volume mountpoint +| LOG_PATH                  | `auto`   | `auto`    | default set to /logs and used as a volume mountpoint +| APP_PATH                  | `auto`   | `auto`    | default set to /data and used as a volume mountpoint  | TMP_APP_PATH              | `auto`   | `auto`    | default set to /tmp/nodejs and used to hold app content and copy to $APP_PATH on startup (if $APP_PATH is empty)  ## Exposed port @@ -103,8 +103,8 @@ CMD ["/bin/run.sh"]  | Container directory  | Description                                                              |  |----------------------|--------------------------------------------------------------------------| -| /data/logs/nodejs    | log directory used to record container and nodejs logs -| /data/nodejs         | data directory served by nodejs. If empty will be filled with app on startup. In other case use content from $TMP_APP_PATH directory +| /logs                | log directory used to record container and nodejs logs +| /data                | data directory served by nodejs. If empty will be filled with app on startup. In other case use content from $TMP_APP_PATH directory  ## Testing the service @@ -125,8 +125,8 @@ You must have a working environment with the source code of this repository. Rea  1. Jump into the container directory with `cd Services/nodejs`  2. Build the container using `docker build -t sv-nodejs .`  3. Run this container  -  1. Interactively with `docker run -p 8000:8000 -v /data/logs/nodejs -it sv-nodejs`. If you add a second parameter (like `/bin/bash`) to will run this command instead of the default entrypoint. Usefull to interact with this container (ex: `/bin/bash`, `/bin/ps -a`, `/bin/df -h`,...)  -  2. As a daemon with `docker run -p 8000:8000 -v /data/logs/nodejs -d sv-nodejs` +  1. Interactively with `docker run -p 8000:8000 -v /logs -it sv-nodejs`. If you add a second parameter (like `/bin/bash`) to will run this command instead of the default entrypoint. Usefull to interact with this container (ex: `/bin/bash`, `/bin/ps -a`, `/bin/df -h`,...)  +  2. As a daemon with `docker run -p 8000:8000 -v /logs -d sv-nodejs`  ### Build & run a container using `docker-compose` diff --git a/Services/nodejs/docker-compose.yml b/Services/nodejs/docker-compose.yml index b366f76..c5dc597 100644 --- a/Services/nodejs/docker-compose.yml +++ b/Services/nodejs/docker-compose.yml @@ -12,5 +12,5 @@ server:      CONTAINER_SERVICE: "nodejs"      CONTAINER_INSTANCE: "service-nodejs"    volumes: -    - "/tmp/container/logs/nodejs:/data/logs/nodejs" -    - "/tmp/container/nodejs:/data/nodejs"
\ No newline at end of file +    - "/tmp/container/logs/nodejs:/logs" +    - "/tmp/container/nodejs:/data"
\ No newline at end of file diff --git a/Services/nodejs/run.sh b/Services/nodejs/run.sh index cc94229..870958a 100644 --- a/Services/nodejs/run.sh +++ b/Services/nodejs/run.sh @@ -5,11 +5,11 @@ source /bin/sx-lib.sh  function check_nodejs_environment {      check_environment      if [ ! -v APP_PATH ]; then -        APP_PATH="/data/nodejs" +        APP_PATH="/data"          export APP_PATH      fi      if [ ! -v LOG_PATH ]; then -        LOG_PATH="/data/logs/nodejs" +        LOG_PATH="/logs"          export LOG_PATH      fi  } @@ -59,20 +59,26 @@ function end_config {      echo "=> END NODEJS CONFIGURATION"  } +function stop_nodejs_handler { +    killall node +    echo "+=====================================================" | tee -a $STARTUPLOG +    echo "| Container $HOSTNAME is now STOPPED" | tee -a $STARTUPLOG +    echo "+=====================================================" | tee -a $STARTUPLOG +    exit 143; # 128 + 15 -- SIGTERM +} +  # Start the nodejs executable with application entrypoint  # the running shell -function start_daemon { -    echo "=> Starting nodejs daemon ..." | tee -a $STARTUPLOG -    display_container_started | tee -a $STARTUPLOG -    exec node $APP_MAIN +function start_service_nodejs { +    trap 'kill ${!}; stop_nodejs_handler' SIGHUP SIGINT SIGQUIT SIGTERM SIGKILL SIGSTOP SIGCONT +    echo "+=====================================================" | tee -a $STARTUPLOG +    echo "| Container $HOSTNAME is now RUNNING" | tee -a $STARTUPLOG +    echo "+=====================================================" | tee -a $STARTUPLOG +    exec node $APP_MAIN   } -if [[ "$0" == *"run.sh" && ! $1 = "" ]];then -    eval "$@";  -fi -  check_nodejs_environment | tee -a $STARTUPLOG  display_container_nodejs_header | tee -a $STARTUPLOG  begin_config | tee -a $STARTUPLOG  end_config | tee -a $STARTUPLOG -start_daemon +start_service_nodejs | 
