diff options
Diffstat (limited to 'Services/mongo')
-rw-r--r-- | Services/mongo/Dockerfile | 6 | ||||
-rw-r--r-- | Services/mongo/README.md | 16 | ||||
-rw-r--r-- | Services/mongo/docker-compose.yml | 4 | ||||
-rw-r--r-- | Services/mongo/run.sh | 34 |
4 files changed, 35 insertions, 25 deletions
diff --git a/Services/mongo/Dockerfile b/Services/mongo/Dockerfile index 98ec5f8..c3f1bab 100644 --- a/Services/mongo/Dockerfile +++ b/Services/mongo/Dockerfile @@ -4,9 +4,9 @@ MAINTAINER Christophe LARUE <dev@startx.fr> USER root RUN dnf -y install mongodb mongodb-server libmongo-client rsyslog-mongodb && \ dnf clean all -ENV STARTUPLOG=/data/logs/mongodb/startup.log \ - LOG_PATH=/data/logs/mongodb \ - DATA_PATH=/data/mongodb +ENV STARTUPLOG=/logs/startup.log \ + LOG_PATH=/logs \ + DATA_PATH=/data COPY *.sh /bin/ RUN chmod 775 /bin/run.sh && \ mkdir -p $DATA_PATH && \ diff --git a/Services/mongo/README.md b/Services/mongo/README.md index 5951629..194c2e7 100644 --- a/Services/mongo/README.md +++ b/Services/mongo/README.md @@ -29,8 +29,8 @@ service: CONTAINER_SERVICE: "mongo" CONTAINER_INSTANCE: "service-mongo" volumes: - - "/tmp/container/logs/mongo:/data/logs/mongo" - - "/tmp/container/mongo:/data/mongo" + - "/tmp/container/logs/mongo:/logs" + - "/tmp/container/mongo:/data" ``` ## Docker-compose in various situations @@ -88,8 +88,8 @@ CMD ["/bin/run.sh"] | CONTAINER_TYPE | `string` | `no` | Container family (os, service, application. could be enhanced | CONTAINER_SERVICE | `string` | `no` | Define the type of service or application provided | HOSTNAME | `auto` | `auto` | Container unique id automatically assigned by docker daemon at startup -| LOG_PATH | `auto` | `auto` | default set to /data/logs/mongo and used as a volume mountpoint -| DATA_PATH | `auto` | `auto` | default set to /data/mongo and used as a volume mountpoint +| LOG_PATH | `auto` | `auto` | default set to /logs and used as a volume mountpoint +| DATA_PATH | `auto` | `auto` | default set to /data and used as a volume mountpoint ## Exposed port @@ -101,8 +101,8 @@ CMD ["/bin/run.sh"] | Container directory | Description | |----------------------|--------------------------------------------------------------------------| -| /data/logs/mongo | log directory used to record container and mongo logs -| /data/mongo | data directory served by mongo. If empty will be filled with app on startup. In other case use content from mountpoint or data volumes +| /logs | log directory used to record container and mongo logs +| /data | data directory served by mongo. If empty will be filled with app on startup. In other case use content from mountpoint or data volumes ## Testing the service @@ -123,8 +123,8 @@ You must have a working environment with the source code of this repository. Rea 1. Jump into the container directory with `cd Services/mongo` 2. Build the container using `docker build -t sv-mongo .` 3. Run this container - 1. Interactively with `docker run -p 27017:27017 -v /data/logs/mongo -it sv-mongo`. 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 27017:27017 -v /data/logs/mongo -d sv-mongo` + 1. Interactively with `docker run -p 27017:27017 -v /logs -it sv-mongo`. 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 27017:27017 -v /logs -d sv-mongo` ### Build & run a container using `docker-compose` diff --git a/Services/mongo/docker-compose.yml b/Services/mongo/docker-compose.yml index 427771d..3109a53 100644 --- a/Services/mongo/docker-compose.yml +++ b/Services/mongo/docker-compose.yml @@ -13,5 +13,5 @@ server: CONTAINER_SERVICE: "mongo" CONTAINER_INSTANCE: "service-mongo" volumes: - - "/tmp/container/logs/mongodb:/data/logs/mongodb" - - "/tmp/container/mongodb:/data/mongodb"
\ No newline at end of file + - "/tmp/container/logs/mongodb:/logs" + - "/tmp/container/mongodb:/data"
\ No newline at end of file diff --git a/Services/mongo/run.sh b/Services/mongo/run.sh index 14e00db..e3356c9 100644 --- a/Services/mongo/run.sh +++ b/Services/mongo/run.sh @@ -4,11 +4,11 @@ source /bin/sx-lib.sh function check_mongodb_environment { check_environment if [ ! -v APP_PATH ]; then - APP_PATH="/data/mongodb" + APP_PATH="/data" export APP_PATH fi if [ ! -v LOG_PATH ]; then - LOG_PATH="/data/logs/mongodb" + LOG_PATH="/logs" export LOG_PATH fi } @@ -69,23 +69,33 @@ function end_config { echo "=> END MONGODB CONFIGURATION" } +function stop_mongo_handler { + killall mongod + echo "+=====================================================" | tee -a $STARTUPLOG + echo "| Container $HOSTNAME is now STOPPED" | tee -a $STARTUPLOG + echo "+=====================================================" | tee -a $STARTUPLOG + exit 143; # 128 + 15 -- SIGTERM +} + + # Start the mongodb server as a deamon and execute it inside # the running shell -function start_daemon { - echo "=> Starting mongodb daemon ..." | tee -a $STARTUPLOG +function start_service_mongo { + trap 'kill ${!}; stop_mongo_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 su mongodb - display_container_started | tee -a $STARTUPLOG /usr/bin/mongod --logappend --logpath $LOG_PATH/mongodb.log --dbpath $DATA_PATH --journal --fork - exec tail -f $LOG_PATH/mongodb.log + exec tail -f /dev/null & + while true + do + tail -f /dev/null & wait ${!} + done } - -if [[ "$0" == *"run.sh" && ! $1 = "" ]];then - eval "$@"; -fi - check_mongodb_environment | tee -a $STARTUPLOG display_container_mongodb_header | tee -a $STARTUPLOG begin_config | tee -a $STARTUPLOG end_config | tee -a $STARTUPLOG -start_daemon +start_service_mongo |