浏览代码

Fix setup and upgrade

Girish Ramakrishnan 8 年之前
父节点
当前提交
27b4d06ccb
共有 3 个文件被更改,包括 58 次插入22 次删除
  1. 5 1
      Dockerfile
  2. 17 0
      config.json.template
  3. 36 21
      start.sh

+ 5 - 1
Dockerfile

@@ -6,11 +6,15 @@ ENV PATH /usr/local/node-4.2.1/bin:$PATH
 RUN mkdir -p /app/code
 WORKDIR /app/code
 RUN curl -L https://github.com/NodeBB/NodeBB/archive/v1.1.0.tar.gz | tar -xz --strip-components 1 -f -
+ADD config.json.template /app/code
 RUN npm install --production
 
 # these links will become valid after setup is run
-RUN rm -rf /app/code/config.json && ln -sf /run/nodebb/config.json /app/code/config.json
 RUN mv /app/code/public/uploads /app/code/public/uploads_template && ln -sf /app/data/public/uploads /app/code/public/uploads
+
+# setup code insists on generating config.json
+RUN ln -sF /run/nodebb/config.json /app/code/config.json
+
 RUN rm -rf /app/code/logs && ln -sf /run/nodebb/logs /app/code/logs
 
 ADD start.sh /app/code/start.sh

+ 17 - 0
config.json.template

@@ -0,0 +1,17 @@
+{
+    "url": "##APP_ORIGIN",
+    "secret": "##SECRET",
+
+    "database": "mongo",
+    "mongo": {
+        "host": "##MONGODB_HOST",
+        "port": "##MONGODB_PORT",
+        "username": "##MONGODB_USERNAME",
+        "password": "##MONGODB_PASSWORD",
+        "database": "##MONGODB_DATABASE"
+    },
+
+    "upload_path": "/app/data/public/uploads",
+    "views_dir": "/run/nodebb/public/templates"
+}
+

+ 36 - 21
start.sh

@@ -3,7 +3,7 @@
 set -eu
 
 echo "Creating directories"
-mkdir -p /app/data/public/uploads /run/nodebb/logs
+mkdir -p /app/data/public/uploads /run/nodebb/logs /run/nodebb/public/templates
 
 if [[ -z "$(ls -A /app/data/public/uploads)" ]]; then
     echo "First run"
@@ -13,26 +13,41 @@ fi
 
 chown -R cloudron:cloudron /app/data /run/nodebb
 
-# this will generate the config.json
-setup="{
-    \"url\": \"https://${HOSTNAME}\",
-    \"admin:username\": \"admin\",
-    \"admin:password\": \"password\",
-    \"admin:password:confirm\": \"password\",
-    \"admin:email\": \"admin@cloudron.io\",
-    \"database\": \"mongo\",
-    \"mongo\": true,
-    \"mongo:host\": \"${MONGODB_HOST}\",
-    \"mongo:port\": \"${MONGODB_PORT}\",
-    \"mongo:username\": \"${MONGODB_USERNAME}\",
-    \"mongo:password\": \"${MONGODB_PASSWORD}\",
-    \"mongo:database\": \"${MONGODB_DATABASE}\",
-    \"upload_path\": \"/app/data/public/uploads\"
-}"
-
 export NODE_ENV=production
-echo "Creating config.json"
-node /app/code/app --setup "${setup}"
+
+if [[ ! -f /app/data/.setup_done ]]; then
+    echo "Running initial setup"
+    setup="{
+        \"url\": \"${APP_ORIGIN}\",
+        \"admin:username\": \"admin\",
+        \"admin:password\": \"password\",
+        \"admin:password:confirm\": \"password\",
+        \"admin:email\": \"admin@cloudron.io\",
+        \"database\": \"mongo\",
+        \"mongo:host\": \"${MONGODB_HOST}\",
+        \"mongo:port\": \"${MONGODB_PORT}\",
+        \"mongo:username\": \"${MONGODB_USERNAME}\",
+        \"mongo:password\": \"${MONGODB_PASSWORD}\",
+        \"mongo:database\": \"${MONGODB_DATABASE}\"
+    }"
+
+    # this will create a config.json
+    node /app/code/app --setup "${setup}"
+    touch /app/data/.setup_done
+fi
+
+# Re-create config.json
+sed -e "s,##APP_ORIGIN,${APP_ORIGIN}," \
+    -e "s/##MONGODB_HOST/${MONGODB_HOST}/" \
+    -e "s/##MONGODB_PORT/${MONGODB_PORT}/" \
+    -e "s/##MONGODB_USERNAME/${MONGODB_USERNAME}/" \
+    -e "s/##MONGODB_PASSWORD/${MONGODB_PASSWORD}/" \
+    -e "s/##MONGODB_DATABASE/${MONGODB_DATABASE}/" \
+    -e "s/##SECRET/$(uuid)/" \
+    /app/code/config.json.template > /run/nodebb/config.json
+
+echo "Updating nodebb"
+node /app/code/app --upgrade
 
 echo "Starting nodebb"
-/usr/local/bin/gosu cloudron:cloudron node /app/code/loader.js --no-daemon --no-silent
+/usr/local/bin/gosu cloudron:cloudron node /app/code/loader.js --no-daemon --no-silent --config /run/nodebb/config.json