diff --git a/server/api-entrypoint.sh b/server/api-entrypoint.sh new file mode 100644 index 0000000..5eac21f --- /dev/null +++ b/server/api-entrypoint.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +################################################################################ +# Name : api-entrypoint.sh +# Args : OPTIONAL 1) filename 2) last number of lines 3) sleep for +# Description : Initialization script for nodejs application +################################################################################ + +# VARIABLES +LOG_DIR=${1:-/var/log/mongodb} +LOG_FILE=${2:-${LOG_DIR}/mongod.log} +TAIL_LINES=${3:-20} +SLEEP=${4:-1} + +# MAIN +while : +do + [[ -f "${LOG_FILE}" ]] && + tail -n "${TAIL_LINES}" "${LOG_FILE}" | grep -q 'waiting for connections on port 27017' "${LOG_FILE}" && + break || echo '[INFO] Waiting for mongodb...' + sleep ${SLEEP} +done + +pm2-runtime start ecosystem.config.js \ No newline at end of file diff --git a/server/db-entrypoint.sh b/server/db-entrypoint.sh new file mode 100644 index 0000000..3413a9b --- /dev/null +++ b/server/db-entrypoint.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +################################################################################ +# Name : db-entrypoint.sh +# Args : OPTIONAL 1) filename +# Description : Initialization script for mongodb +################################################################################ + +# VARIABLES +LOG_DIR=${1:-/var/log/mongodb} +LOG_FILE=${2:-${LOG_DIR}/mongod.log} + +# MAIN +> "${LOG_FILE}" +chown -R mongodb:mongodb "${LOG_DIR}" +/usr/local/bin/docker-entrypoint.sh --logpath "${LOG_FILE}" --filePermissions 777 --logappend diff --git a/server/docker-compose.yml b/server/docker-compose.yml index f2637ca..f6d32fc 100644 --- a/server/docker-compose.yml +++ b/server/docker-compose.yml @@ -5,14 +5,16 @@ services: restart: always volumes: - ./docker-data/db:/data/db + - ./docker-data/log:/var/log/mongodb + - ./db-entrypoint.sh:/entrypoint.sh ports: - 27018:${MONGO_PORT} environment: MONGO_INITDB_ROOT_USERNAME: ${MONGO_ROOT_USER} MONGO_INITDB_ROOT_PASSWORD: ${MONGO_ROOT_PASSWORD} + entrypoint: ['bash', '/entrypoint.sh'] api: - # TODO: wait for mongodb to be available... image: entropychat.api build: . restart: on-failure @@ -22,6 +24,8 @@ services: - ./:/usr/src/app:cached - npm_cache:/root/.npm:delegated - node_modules:/usr/src/app/node_modules:delegated + - ./docker-data/log:/var/log/mongodb + - ./api-entrypoint.sh:/entrypoint.sh ports: - ${PORT}:${PORT} environment: @@ -34,6 +38,7 @@ services: MONGO_DB_NAME: ${MONGO_DB_NAME} MONGO_ROOT_USER: ${MONGO_ROOT_USER} MONGO_ROOT_PASSWORD: ${MONGO_ROOT_PASSWORD} + entrypoint: ['sh', '/entrypoint.sh'] volumes: npm_cache: