From 1022cf1f63567bd24760921dcaf1f2b4e5b4a557 Mon Sep 17 00:00:00 2001 From: Carlan Calazans Date: Sat, 27 Jun 2020 22:24:53 +0100 Subject: [PATCH 1/3] ISSUE-27: Fix docker mongo setup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Updated server docker-compose.yml to add container name and new volume - Updated main README.md to add a note on MONGO_HOST configuration - Added mongo-init.sh to initialize mongodb container Fixes #27 💚 --- README.md | 1 + server/docker-compose.yml | 5 ++++- server/mongo-init.sh | 9 +++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 server/mongo-init.sh diff --git a/README.md b/README.md index dce8a6c..99989fa 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,7 @@ https://entropychat.app * The authorization callback URL should be set to: * http://localhost:3030/oauth/github/callback * Change the port if your feathers backend is running on a different port + * Note: for `MONGO_HOST`, if running on docker use the `container-name` of db service. Otherwise, the host/ip address of your mongodb instance. * The oauth flow requires that the client is running at: * http://localhost:8080 * If your client is running on a different port, you will need to update [server/public/index.html](server/public/index.html) to allow sending messages to the correct port / origin diff --git a/server/docker-compose.yml b/server/docker-compose.yml index f2637ca..1663e3a 100644 --- a/server/docker-compose.yml +++ b/server/docker-compose.yml @@ -2,18 +2,21 @@ version: '3.7' services: db: image: mongo:4 + container_name: server_db restart: always volumes: - ./docker-data/db:/data/db + - ./mongo-init.sh:/docker-entrypoint-initdb.d/mongo-init.sh ports: - 27018:${MONGO_PORT} environment: MONGO_INITDB_ROOT_USERNAME: ${MONGO_ROOT_USER} MONGO_INITDB_ROOT_PASSWORD: ${MONGO_ROOT_PASSWORD} + MONGO_INITDB_DATABASE: ${MONGO_DB_NAME} api: - # TODO: wait for mongodb to be available... image: entropychat.api + container_name: server_api build: . restart: on-failure depends_on: diff --git a/server/mongo-init.sh b/server/mongo-init.sh new file mode 100644 index 0000000..8051393 --- /dev/null +++ b/server/mongo-init.sh @@ -0,0 +1,9 @@ +#!/bin/bash +echo '=========================================================================' +echo "> use $MONGO_INITDB_DATABASE;" +echo "> db.createCollection('users');" +mongo < Date: Sat, 18 Jul 2020 01:05:33 +0100 Subject: [PATCH 2/3] ISSUE-27: Fix docker mongo setup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Rolled back previous changes after feedback - Updated docker-compose.yml - Updated gitignore - Added initialization scripts for db and api - Added placeholder file Fixes #27 💚 --- README.md | 1 - server/.gitignore | 3 ++- server/api-entrypoint.sh | 23 +++++++++++++++++++++++ server/db-entrypoint.sh | 14 ++++++++++++++ server/docker-compose.yml | 10 ++++++---- server/docker-data/mongod.log | 1 + server/mongo-init.sh | 9 --------- 7 files changed, 46 insertions(+), 15 deletions(-) create mode 100644 server/api-entrypoint.sh create mode 100644 server/db-entrypoint.sh create mode 100755 server/docker-data/mongod.log delete mode 100644 server/mongo-init.sh diff --git a/README.md b/README.md index 99989fa..dce8a6c 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,6 @@ https://entropychat.app * The authorization callback URL should be set to: * http://localhost:3030/oauth/github/callback * Change the port if your feathers backend is running on a different port - * Note: for `MONGO_HOST`, if running on docker use the `container-name` of db service. Otherwise, the host/ip address of your mongodb instance. * The oauth flow requires that the client is running at: * http://localhost:8080 * If your client is running on a different port, you will need to update [server/public/index.html](server/public/index.html) to allow sending messages to the correct port / origin diff --git a/server/.gitignore b/server/.gitignore index 1176722..540f673 100644 --- a/server/.gitignore +++ b/server/.gitignore @@ -112,4 +112,5 @@ data/ .env -docker-data \ No newline at end of file +docker-data/* +!docker-data/mongod.log diff --git a/server/api-entrypoint.sh b/server/api-entrypoint.sh new file mode 100644 index 0000000..f61a947 --- /dev/null +++ b/server/api-entrypoint.sh @@ -0,0 +1,23 @@ +#!/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_FILE=${1:-/mongod.log} +TAIL_LINES=${2:-20} +SLEEP=${3:-2} + +# 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 to be available' + 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..e08a11e --- /dev/null +++ b/server/db-entrypoint.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +################################################################################ +# Name : db-entrypoint.sh +# Args : OPTIONAL 1) filename +# Description : Initialization script for mongodb +################################################################################ + +# VARIABLES +LOG_FILE=${1:-/mongod.log} + +# MAIN +> ${LOG_FILE} +/usr/local/bin/docker-entrypoint.sh --logpath ${LOG_FILE} --filePermissions 777 --logappend \ No newline at end of file diff --git a/server/docker-compose.yml b/server/docker-compose.yml index 1663e3a..1594733 100644 --- a/server/docker-compose.yml +++ b/server/docker-compose.yml @@ -2,21 +2,20 @@ version: '3.7' services: db: image: mongo:4 - container_name: server_db restart: always volumes: - ./docker-data/db:/data/db - - ./mongo-init.sh:/docker-entrypoint-initdb.d/mongo-init.sh + - ./docker-data/mongod.log:/mongod.log + - ./db-entrypoint.sh:/entrypoint.sh ports: - 27018:${MONGO_PORT} environment: MONGO_INITDB_ROOT_USERNAME: ${MONGO_ROOT_USER} MONGO_INITDB_ROOT_PASSWORD: ${MONGO_ROOT_PASSWORD} - MONGO_INITDB_DATABASE: ${MONGO_DB_NAME} + entrypoint: ['bash', '/entrypoint.sh'] api: image: entropychat.api - container_name: server_api build: . restart: on-failure depends_on: @@ -25,6 +24,8 @@ services: - ./:/usr/src/app:cached - npm_cache:/root/.npm:delegated - node_modules:/usr/src/app/node_modules:delegated + - ./docker-data/mongod.log:/mongod.log + - ./api-entrypoint.sh:/entrypoint.sh ports: - ${PORT}:${PORT} environment: @@ -37,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: diff --git a/server/docker-data/mongod.log b/server/docker-data/mongod.log new file mode 100755 index 0000000..b3a4252 --- /dev/null +++ b/server/docker-data/mongod.log @@ -0,0 +1 @@ +placeholder \ No newline at end of file diff --git a/server/mongo-init.sh b/server/mongo-init.sh deleted file mode 100644 index 8051393..0000000 --- a/server/mongo-init.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash -echo '=========================================================================' -echo "> use $MONGO_INITDB_DATABASE;" -echo "> db.createCollection('users');" -mongo < Date: Sun, 19 Jul 2020 00:45:11 +0100 Subject: [PATCH 3/3] ISSUE-27: Fix docker mongo setup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Rolled back previous changes on gitignore - Updated docker-compose.yml - Updated db and api initialization scripts - Deleted placeholder file Fixes #27 💚 --- server/.gitignore | 3 +-- server/api-entrypoint.sh | 13 +++++++------ server/db-entrypoint.sh | 8 +++++--- server/docker-compose.yml | 4 ++-- server/docker-data/mongod.log | 1 - 5 files changed, 15 insertions(+), 14 deletions(-) delete mode 100755 server/docker-data/mongod.log diff --git a/server/.gitignore b/server/.gitignore index 540f673..1176722 100644 --- a/server/.gitignore +++ b/server/.gitignore @@ -112,5 +112,4 @@ data/ .env -docker-data/* -!docker-data/mongod.log +docker-data \ No newline at end of file diff --git a/server/api-entrypoint.sh b/server/api-entrypoint.sh index f61a947..5eac21f 100644 --- a/server/api-entrypoint.sh +++ b/server/api-entrypoint.sh @@ -7,16 +7,17 @@ ################################################################################ # VARIABLES -LOG_FILE=${1:-/mongod.log} -TAIL_LINES=${2:-20} -SLEEP=${3:-2} +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 to be available' + [[ -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 diff --git a/server/db-entrypoint.sh b/server/db-entrypoint.sh index e08a11e..3413a9b 100644 --- a/server/db-entrypoint.sh +++ b/server/db-entrypoint.sh @@ -7,8 +7,10 @@ ################################################################################ # VARIABLES -LOG_FILE=${1:-/mongod.log} +LOG_DIR=${1:-/var/log/mongodb} +LOG_FILE=${2:-${LOG_DIR}/mongod.log} # MAIN -> ${LOG_FILE} -/usr/local/bin/docker-entrypoint.sh --logpath ${LOG_FILE} --filePermissions 777 --logappend \ No newline at end of file +> "${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 1594733..f6d32fc 100644 --- a/server/docker-compose.yml +++ b/server/docker-compose.yml @@ -5,7 +5,7 @@ services: restart: always volumes: - ./docker-data/db:/data/db - - ./docker-data/mongod.log:/mongod.log + - ./docker-data/log:/var/log/mongodb - ./db-entrypoint.sh:/entrypoint.sh ports: - 27018:${MONGO_PORT} @@ -24,7 +24,7 @@ services: - ./:/usr/src/app:cached - npm_cache:/root/.npm:delegated - node_modules:/usr/src/app/node_modules:delegated - - ./docker-data/mongod.log:/mongod.log + - ./docker-data/log:/var/log/mongodb - ./api-entrypoint.sh:/entrypoint.sh ports: - ${PORT}:${PORT} diff --git a/server/docker-data/mongod.log b/server/docker-data/mongod.log deleted file mode 100755 index b3a4252..0000000 --- a/server/docker-data/mongod.log +++ /dev/null @@ -1 +0,0 @@ -placeholder \ No newline at end of file