summary refs log tree commit diff
diff options
context:
space:
mode:
authorNobody <17956512+n0bodysec@users.noreply.github.com>2022-03-08 12:10:06 -0300
committerGitHub <noreply@github.com>2022-03-08 18:10:06 +0300
commitadce0c82d12c4a7f39be1a63dce4e15b913d07db (patch)
tree3b031433d761d50cc8afcf27d2f3e9dd9c167350
parentfix(util): working invisible status type (diff)
downloadserver-adce0c82d12c4a7f39be1a63dce4e15b913d07db.tar.xz
refactor(Docker): add working docker scripts (#671)
-rw-r--r--Dockerfile45
-rw-r--r--docker-compose.yml48
2 files changed, 83 insertions, 10 deletions
diff --git a/Dockerfile b/Dockerfile
index d4b423ee..3c8a0b31 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,7 +1,40 @@
-FROM node:14
-WORKDIR /usr/src/fosscord-server/
-COPY . .
-WORKDIR /usr/src/fosscord-server/bundle
+FROM node:alpine
+
+# env vars
+ENV WORK_DIR="/srv/fosscord-server"
+ENV DEV_MODE=0
+ENV HTTP_PORT=3001
+ENV WS_PORT=3002
+ENV CDN_PORT=3003
+ENV RTC_PORT=3004
+ENV ADMIN_PORT=3005
+
+# exposed ports (only for reference, see https://docs.docker.com/engine/reference/builder/#expose)
+EXPOSE ${HTTP_PORT}/tcp ${WS_PORT}/tcp ${CDN_PORT}/tcp ${RTC_PORT}/tcp ${ADMIN_PORT}/tcp
+
+# install required apps
+RUN apk add --no-cache --update git python2 py-pip make build-base
+
+# optionl: packages for debugging/development
+RUN apk add --no-cache sqlite
+
+# download fosscord-server
+WORKDIR $WORK_DIR/src
+RUN git clone https://github.com/fosscord/fosscord-server.git .
+
+# setup and run
+WORKDIR $WORK_DIR/src/bundle
 RUN npm run setup
-EXPOSE 3001
-CMD [ "npm", "run", "start:bundle" ]
+RUN npm install @yukikaze-bot/erlpack
+# RUN npm install mysql --save
+
+# create update script
+RUN printf '#!/bin/sh\n\ngit -C $WORK_DIR/src/ checkout master\ngit -C $WORK_DIR/src/ reset --hard HEAD\ngit -C $WORK_DIR/src/ pull\ncd $WORK_DIR/src/bundle/\nnpm run setup\n' > $WORK_DIR/update.sh
+RUN chmod +x $WORK_DIR/update.sh
+
+# configure entrypoint file
+RUN printf '#!/bin/sh\n\nDEV_MODE=${DEV_MODE:-0}\n\nif [ "$DEV_MODE" -eq 1 ]; then\n    tail -f /dev/null\nelse\n    cd $WORK_DIR/src/bundle/\n    npm run start:bundle\nfi\n' > $WORK_DIR/entrypoint.sh
+RUN chmod +x $WORK_DIR/entrypoint.sh
+
+WORKDIR $WORK_DIR
+ENTRYPOINT ["./entrypoint.sh"]
diff --git a/docker-compose.yml b/docker-compose.yml
index 3c03220c..13696f6f 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,7 +1,47 @@
-version: "3"
+version: '3.8'
+
 services:
-  server:
-    image: fosscord/server
+  fosscord:
+    container_name: fosscord
+    image: fosscord
+    restart: on-failure:5
+    # depends_on: mariadb
     build: .
     ports:
-      - 3001:3001
+      - '3001-3005:3001-3005'
+    volumes:
+      # - ./data/:${WORK_DIR:-/srv/fosscord-server}/data/
+      - data:${WORK_DIR:-/srv/fosscord-server}/
+    environment:
+      WORK_DIR: ${WORK_DIR:-/srv/fosscord-server}
+      DEV_MODE: ${DEV_MODE:-0}
+      THREADS: ${THREADS:-1}
+      DATABASE: ${DATABASE:-../../data/database.db}
+      STORAGE_LOCATION: ${STORAGE_LOCATION:-../../data/files/}
+      HTTP_PORT: 3001
+      WS_PORT: 3002
+      CDN_PORT: 3003
+      RTC_PORT: 3004
+      ADMIN_PORT: 3005
+
+  # mariadb:
+  #   image: mariadb:latest
+  #   restart: on-failure:5
+  #   environment:
+  #     MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-secr3tpassw0rd}
+  #     MYSQL_DATABASE: ${MYSQL_DATABASE:-fosscord}
+  #     MYSQL_USER: ${MYSQL_USER:-fosscord}
+  #     MYSQL_PASSWORD: ${MYSQL_PASSWORD:-password1}
+  #   networks:
+  #     - default
+  #   volumes:
+  #     - mariadb:/var/lib/mysql
+
+volumes:
+  data:
+  # mariadb:
+
+networks:
+  default:
+    name: fosscord
+    driver: bridge